[JAVA][ACEGI]Acegi安全架構在AJAX下的逾時控制

來源:互聯網
上載者:User

       Acegi安全架構在AJAX下的逾時控制

        當我們使用Acegi安全架構時,一般都會對所有請求就像攔截。這樣,如果session逾時,通過DWR進行Ajax遠程調用時,同樣會被Acegi的Filter攔截,這時Acegi發現使用者沒有登入,就會對請求進行轉寄(轉寄到登入頁面),但由於此時進行的是Ajax的調用,頁面並不會將進行跳轉,而是返回302的HTTP響應碼,這樣瀏覽器就不會有任何的反應,這樣對使用者是非常不友好的。可以通過一些簡單的處理,在session逾時後,當使用者進行Ajax遠程調用時,同其他請求一樣,返回到登入頁面。

      首先,在Acegi的安全設定檔(即Spring的設定檔)裡面,將/dwr/**路徑的請求配置為可以匿名使用者可以訪問的。

      其次,自訂一個DWRRemoter,大概實現如下:

public class MyDWRRemoter extends DefaultRemoter{<br /> public Replies execute( Calls calls ) {<br /> HttpSession session = WebContextFactory.get().getSession();<br /> ISessionContainer sc = (ISessionContainer) session.getAttribute(<br /> ISessionContainer.SESSION_CONTAINER_KEY );</p><p> //session檢查<br /> if (sc == null || sc.getUserInfo() == null) {<br /> logOut();<br /> return super.execute(new Calls());<br /> } else {<br /> IUserInfo userInfo = sc.getUserInfo();<br /> if(!SecurityFactory.getInstance().isOnline(<br /> userInfo.getUserID(), session.getId())) {<br /> logOut();<br /> return super.execute(new Calls());<br /> }<br /> }<br /> return super.execute( calls );<br /> }</p><p> private void logOut() {<br /> WebContext wct = WebContextFactory.get();<br /> Util utilThis = new Util(wct.getScriptSession());<br /> utilThis.addScript( new ScriptBuffer("logOut()"));<br /> }<br />}在web.xml檔案中加入DWR的參數,是自訂的DWRRemoter生效:

<init-param><br /> <param-name><br /> org.directwebremoting.extend.Remoter<br /> </param-name><br /> <param-value>com.xxx.base.framework.web.MyDWRRemoter</param-value><br /></init-param>

 

最後,在JSP頁面上寫下方法名為logOut的JavaScript函數,該函數返回到登入頁面即可。

 

通過上面的三個簡單步驟,即可實現在DWR調用遠程方法時,如果session逾時,系統順利的退出到登入頁面的效果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.