Flex專案的Session驗證

2022-02-11 19:17:47 字數 1146 閱讀 3382

[暫定用此方法]

一新專案,考慮到flex做ui太方便了,準備用flex做,遇到乙個使用者鑑權的問題。flex本身是屬於客戶端的東西,無法獲得session,所以不能直接得知當前使用者是否session過期。

這裡提到的解決方法是:寫乙個filter,然後在dofilter()中,檢視session是否存在,如果不存在,就轉向登入頁面,比如signin.html。

看似簡單,不過今天走了些彎路,我原先的web.xml配置如下:

authfilter     org.charry.lib.rbac.filter.authfilter 

filter中轉向到signin.html,這樣有個問題:上面的配置會讓所有的資源訪問都會被轉向signin.html,甚至對 sigin.html本身的訪問都會被轉向signin.html,造成無限迴圈,瀏覽器會指出該錯誤。所以我在dofilter()裡面判斷當前訪問的 資源的uri是否包含signin.html,如果包含,就不做redirect。不過,這樣還是有問題,signin.html頁面裡面會引用一些其他 的資源,比如foo.js, bar.swf, foobar.gif等,對這些資源的訪問也會被redirect。所以我嘗試將filter配置如下,也就是說只過濾html頁面:

authfilter org.charry.lib.rbac.filter.authfilter

這樣還是會有問題:因為swf檔案可以訪問,很多flex專案的swf檔案是可以直接使用的,所以,還存在使用者鑑權的問題。由於該專案用的是blazeds,我只要堵住所有的dataservice的servlet就可以了,所以我最後用了如下的配置:

authfilter org.charry.lib.rbac.filter.authfilter

第乙個模式匹配的目的是:讓所有的amf呼叫全部用過濾器檢查一下許可權,第二條的作用是所有的.html也要經過過濾器檢查(此條不加,會出現重新整理 未登入頁面,不跳轉的問題)。新的問題又來了,我原先的session管理是用blazeds呼叫的,現在自己把路堵死了,所以只能再寫個單獨的 servlet用來實現使用者登入,完整的filter和servlet配置如下:

authfilter org.charry.lib.rbac.filter.authfilter 經驗證,方法可行,但總覺得比較麻煩,繼續留意是否有更為簡便的方法。

flex專案的動態檢驗

public var editworkitemrule object agent code entered is invalid.true index6 true,branch code is required.index7 true,market segment id is required.in...

一些Flex開源專案的整理

as3awss3lib 與 amazon s3 互動的 actionscript 3.0 類庫 聲音編輯類庫 為遊戲開發者整理的 as3 資料結構 一組flash遊戲開發的as3類庫。apeactionscript的模擬物理引擎api 用 as3 實現的密碼系統類庫,支援的演算法主要包括 rsa,a...

一些Flex開源專案的整理

as3awss3lib 與 amazon s3 互動的 actionscript 3.0 類庫 聲音編輯類庫 為遊戲開發者整理的 as3 資料結構 一組flash遊戲開發的as3類庫。apeactionscript的模擬物理引擎api 用 as3 實現的密碼系統類庫,支援的演算法主要包括 rsa,a...