2013-03-01 150 views
1

我在項目中配置了shiro以進行用戶名/密碼驗證。 'filters'和'urls'如下。刷新頁面導致重新登錄?

[filters] 
authc.loginUrl = /login.jsp 
shiro.loginUrl = /login.jsp 
[urls] 
/login.jsp = anon, authc 
/index.jsp = authc 

現在,只要當我們訪問的index.jsp,它會重定向到的login.jsp,即使我剛剛刷新的index.jsp。

當我刷新index.jsp時,如果緩存仍然知道該用戶已經登錄,如何才能讓它保持在index.jsp上?

順便說一句,我沒有配置緩存管理器,所以當它啓動時會彈出錯誤,如'org.apache.shiro.realm.AuthorizingRealm - 沒有設置緩存或cacheManager屬性。無法獲得授權緩存。'我應該如下配置(我只使用shiro核心& web)?

builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager 
securityManager.cacheManager = $builtInCacheManager 

回答

1

剛開始shiro但這個鏈接應該幫助:http://raibledesigns.com/rd/entry/java_web_application_security_part2請參閱「結論」部分。最值得注意的是authc如何在當前會話中強制進行身份驗證(據我所知,這取決於當前的線程調用,可能使用的是本地線程),因此您不需要authc而只是特定的角色。或者像用例中的用戶那樣,因爲這意味着你是一個認識的用戶......這與認證不同(更強的說法)。

此外,如果區分不明確:通過shiro進行身份驗證意味着您剛進入您的用戶/通行證,您知道必須是用戶。記住的用戶已登錄,但如果會話尚未過期,您仍然登錄,您可以離開,其他人可以坐下。還有一些情況,例如大額付款或其他安全操作(警察或其他敏感信息),您可能需要爲該服務專門請求憑證。