2013-03-01 153 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进行身份验证意味着您刚进入您的用户/通行证,您知道必须是用户。记住的用户已登录,但如果会话尚未过期,您仍然登录,您可以离开,其他人可以坐下。还有一些情况,例如大额付款或其他安全操作(警察或其他敏感信息),您可能需要为该服务专门请求凭证。