<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小方的Java博客

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      27 隨筆 :: 17 文章 :: 115 評論 :: 0 Trackbacks
    我在做公司某個框架時有這么一個需求。每次調用dwr的方法前要檢查用戶是否已經登錄,否則就不能執行并且退到首頁。

    當然了,做攔截器有很多方式,但經過研究發現DWR自帶很多插件,其中就有一個調用處理的插件。具體做法如下。

    在web.xml里的DWR配置中加入一個參數:
    <init-param>
                
    <param-name>
                    org.directwebremoting.extend.Remoter
                
    </param-name>
                
    <param-value>com.xxx.base.framework.web.MyDWRRemoter</param-value>
            
    </init-param>

    然后自己創建這個實現類。
    public class MyDWRRemoter extends DefaultRemoter
    {

        
    public Replies execute( Calls calls )
        
    {
            HttpSession session 
    = WebContextFactory.get().getSession();
            ISessionContainer sc 
    = ( ISessionContainer ) session.getAttribute( ISessionContainer.SESSION_CONTAINER_KEY );

            
    //session檢查
            if ( sc == null || sc.getUserInfo() == null )
            
    {
                logOut();
                
    return super.execute( new Calls() );
            }

            
    else
            
    {
                IUserInfo userInfo 
    = sc.getUserInfo();
                
    if(!SecurityFactory.getInstance().isOnline( userInfo.getUserID(), session.getId() ))
                
    {
                    logOut();
                    
    return super.execute( new Calls() );
                }

            }

            
    return super.execute( calls );
        }


        
    private void logOut()
        
    {
            WebContext wct 
    = WebContextFactory.get();
            Util utilThis 
    = new Util(wct.getScriptSession());
            utilThis.addScript( 
    new ScriptBuffer("logOut()"));
        }

    }

    其中,檢查用戶是否登錄,如果沒有登錄就返回一個空的super.execute( new Calls());, 不能返回null否則會報錯。
    檢查通過就調用super.execute( calls );  其實calls里還能獲得很多信息。

    最后大家注意logOut方法,這里用到了DWR2.0新功能:DWR反向調用,就是DWR調用javascript,具體用法大家網上可以查到,需要配置的,我這里就不多說了。補充一下,addScript調用的是html里的function logOut().

    這樣的話,如果用戶session超時,或被管理員踢掉,一旦他做任何dwr操作就會被強迫登出到首頁了。
    posted on 2008-12-05 20:42 方佳瑋 閱讀(2902) 評論(3)  編輯  收藏 所屬分類: AJAX

    評論

    # re: [原創]DWR2.0的調用前攔截 2009-08-06 09:45 bln13fb
    ISessionContainer
    SecurityFactory
    如何導入  回復  更多評論
      

    # re: [原創]DWR2.0的調用前攔截 2010-01-21 10:15 方佳瑋
    @bln13fb

    這是我們公司自己的類,這里只是個范例,你自己有自己的類  回復  更多評論
      

    # re: [原創]DWR2.0的調用前攔截 2011-04-19 15:06 小簡
    在你這個應用里面怎么可以獲得請求的URL呀,我想判斷一下用戶是否對某一個資源是否有訪問權限的時候怎么樣才能知道他是訪問的那個資源呢  回復  更多評論
      

    主站蜘蛛池模板: 日韩亚洲人成在线| 亚洲国产日韩在线成人蜜芽| 亚洲精品国产成人片| 亚洲AV无码乱码国产麻豆| 亚洲黄色高清视频| 日本亚洲色大成网站www久久| 亚洲a∨无码精品色午夜| 一级全免费视频播放| 一区二区三区四区免费视频| 中文字幕无码免费久久99| 免费v片在线观看无遮挡| 国产成A人亚洲精V品无码性色| 亚洲精品中文字幕无码AV| 亚洲欧美日韩中文高清www777 | 亚洲精品国产美女久久久| 久久久久久亚洲精品成人| 亚洲综合一区国产精品| 一边摸一边桶一边脱免费视频| 桃子视频在线观看高清免费视频| 天堂在线免费观看中文版| 不卡精品国产_亚洲人成在线| 亚洲精品美女视频| 人人爽人人爽人人片A免费| 日韩精品人妻系列无码专区免费| 噜噜嘿在线视频免费观看| 国产亚洲成av人片在线观看| 亚洲三级在线观看| 久久精品无码专区免费| 亚洲第一成年免费网站| 久久影院亚洲一区| 亚洲国产精品一区二区三区在线观看 | 中文字幕在线视频免费观看| 91精品免费久久久久久久久| va亚洲va日韩不卡在线观看| 无码欧精品亚洲日韩一区| 亚洲AV成人精品日韩一区| 久久精品免费视频观看| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 97视频免费在线| 狠狠色伊人亚洲综合成人| 亚洲欧洲av综合色无码|