itkui

          年少為何不輕狂!

          利用Filter限制用戶瀏覽權(quán)限

          在一個(gè)系統(tǒng)中通常有多個(gè)權(quán)限的用戶。不同權(quán)限用戶的可以瀏覽不同的頁(yè)面。使用Filter進(jìn)行判斷不僅省下了代碼量,而且如果要更改的話只需要在Filter文件里動(dòng)下就可以。
          以下是Filter文件代碼:

          package cn.itkui.filter;

          import java.io.IOException;

          import javax.servlet.Filter;
          import javax.servlet.FilterChain;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import javax.servlet.http.HttpServletRequest;

          public class RightFilter implements Filter {

              
          public void destroy() {
                  
              }


              
          public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain arg2) throws IOException, ServletException {
                  
          // 獲取uri地址
                  HttpServletRequest request=(HttpServletRequest)sreq;
                  String uri 
          = request.getRequestURI();
                  String ctx
          =request.getContextPath();
                  uri 
          = uri.substring(ctx.length());
                  
          //判斷admin級(jí)別網(wǎng)頁(yè)的瀏覽權(quán)限
                  if(uri.startsWith("/admin")) {
                      
          if(request.getSession().getAttribute("admin")==null{
                          request.setAttribute(
          "message","您沒(méi)有這個(gè)權(quán)限");
                          request.getRequestDispatcher(
          "/login.jsp").forward(sreq,sres);
                          
          return;
                      }

                  }

                  
          //判斷manage級(jí)別網(wǎng)頁(yè)的瀏覽權(quán)限
                  if(uri.startsWith("/manage")) {
                      
          //這里省去
                      }

                  }

                  
          //下面還可以添加其他的用戶權(quán)限,省去。

              }


              
          public void init(FilterConfig arg0) throws ServletException {
                  
              }


          }
          以下是在web.xml需要加入的代碼
           <!-- 判斷頁(yè)面的訪問(wèn)權(quán)限 -->
            
          <filter>
               
          <filter-name>RightFilter</filter-name>
                
          <filter-class>cn.itkui.filter.RightFilter</filter-class>
            
          </filter>
            
          <filter-mapping>
                
          <filter-name>RightFilter</filter-name>
                
          <url-pattern>/admin/*</url-pattern>
            
          </filter-mapping>
            
          <filter-mapping>
                
          <filter-name>RightFilter</filter-name>
                
          <url-pattern>/manage/*</url-pattern>
            
          </filter-mapping>

          posted on 2007-07-18 17:35 itkui 閱讀(2453) 評(píng)論(10)  編輯  收藏 所屬分類: Java

          評(píng)論

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-18 22:24 Hmilyld

          這個(gè)方法挺爽,
          特別是對(duì)多用戶管理的時(shí)候,權(quán)限分配上感覺(jué)蠻好。  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-18 23:41 go

          不錯(cuò)...  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 08:07 demo

          這里面存在比較嚴(yán)重的問(wèn)題,首先權(quán)限變更需要通過(guò)變更代碼來(lái)實(shí)現(xiàn),這是問(wèn)題一;其二,若是需要配置成百上千的權(quán)限,那你都要在代碼里面編寫(xiě)一遍,工作量太大;其三,若是遇到需要中途變更權(quán)限的話,不知道你準(zhǔn)備怎么處理?其四,用戶若是想控制權(quán)限的全過(guò)程,你怎么能釋放這個(gè)權(quán)限讓用戶能夠做到完整控制。  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 09:38 cresposhi

          有理有理,簡(jiǎn)單的限制一下能訪問(wèn)的路徑還是比較優(yōu)雅的,但是如果上升到權(quán)限的話這種方式就不夠用了。  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 10:26 itkui

          @demo
          呵呵,相關(guān)權(quán)限只要在Filter文件里稍微更改下就可以了.
          沒(méi)有做過(guò)太大的程序,所以暫時(shí)沒(méi)法考慮太多.
          不知道仁兄有何高見(jiàn)?  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 10:28 itkui

          Filter能做的很好多,比如限制用戶重復(fù)登陸等等...
          善用它可以減少很多的代碼量,
          需求修改的話修改也比較簡(jiǎn)單.  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 14:32 BeanSoft

          BS 冒充高人, 無(wú)非就是手熟, 早學(xué)了幾天而已. 你跟EA的人比比就知道自己是個(gè)什么水平:
          http://img3.pcgames.com.cn/pcgames/0703/10/870528_pcgamesCryEngine2_06.jpg
          再跟 Java 領(lǐng)域的 Netbeans 支持的 SOA 比比:
          http://www.netbeans.org/kb/55/loanprocessing.html

          做人要謙虛.  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 17:20 小雪飛刀

          以前項(xiàng)目中一直在用這種方法實(shí)現(xiàn)權(quán)限控制,一般的小項(xiàng)目就夠用了。如果是比較大的項(xiàng)目,會(huì)有很多功能強(qiáng)大的權(quán)限控制方式。demo的說(shuō)法不無(wú)道理。  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-19 19:21 itkui

          @小雪飛刀
          當(dāng)然知道他說(shuō)的有道理啦。
          可是我只是在學(xué)習(xí)階段,真正的項(xiàng)目也沒(méi)做過(guò)。
          不知道公司里面一般用什么來(lái)做權(quán)限驗(yàn)證呀?  回復(fù)  更多評(píng)論   

          # re: 利用Filter限制用戶瀏覽權(quán)限 2007-07-23 08:48 濟(jì)南筆記本專賣(mài)

          Servlet的功能之一,寫(xiě)的好  回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          留言簿(1)

          隨筆檔案(24)

          收藏夾(15)

          好站珍藏

          學(xué)習(xí)資源

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 焉耆| 错那县| 奉贤区| 沽源县| 陇西县| 屯昌县| 栖霞市| 泽普县| 怀宁县| 前郭尔| 辉县市| 兖州市| 同心县| 永新县| 信阳市| 武宣县| 万盛区| 乐至县| 龙州县| 常山县| 仙居县| 交口县| 定日县| 海安县| 温宿县| 双柏县| 九江市| 湟源县| 台江县| 突泉县| 瑞丽市| 民和| 灵宝市| 曲松县| 庄河市| 天长市| 华宁县| 大足县| 上犹县| 汶上县| 宜春市|