Shiro 会话注销不起作用

Posted

技术标签:

【中文标题】Shiro 会话注销不起作用【英文标题】:Shiro Session logout not working 【发布时间】:2014-08-01 04:30:28 【问题描述】:

我正在一个项目中工作,我们使用 Apache Shiro 来确保安全。 现在,我不确定问题出在 Shrio 配置中还是其他地方。

发生的情况是,当用户输入凭据并使用基本身份验证进行身份验证时,用户名和密码的值将保留到浏览器关闭为止。我已经在 Firefox 和 Chrome 中尝试过,并且行为相同。

据我了解,这听起来像是 Shiro 的“RememberMe”功能,但我“认为”我已将其关闭。

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException 
    UsernamePasswordToken upToken = (UsernamePasswordToken) token;
    logger.info("Remember Me active ? ", upToken.isRememberMe());

打印: 09:44:00,323 信息 [TestRealm] 还记得我吗?假的

我也尝试过使用 shiro.ini 文件中配置的 Shiro 注销

[main]
...
logout.redirectUrl = /logout.jsp

...
[url]
/logout = logout

logout.jsp 如下所示:

<%@ page import="org.apache.shiro.SecurityUtils" %>
<% SecurityUtils.getSubject().logout();%>
You have succesfully logged out.

这无济于事,只要浏览器未关闭,会话仍处于活动状态。在退出页面时,使用 Chrome-developer,我可以看到资源中的 cookie 已被删除。

shiro.ini 完整文件

[main]
authBasicRealm = se.test.TestRealm
securityManager.realms = $authBasicRealm
#builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
#securityManager.cacheManager = $builtInCacheManager

sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
#securityManager.sessionManager.sessionIdCookieEnabled = false

# cookie for single sign on 
cookie = org.apache.shiro.web.servlet.SimpleCookie 
cookie.name = test.session
cookie.path = /test
cookie.maxAge = 60
#cookie.secure = true
cookie.httpOnly = false
sessionManager.sessionIdCookie = $cookie

sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
sessionManager.sessionDAO = $sessionDAO

securityManager.sessionManager = $sessionManager

logout.redirectUrl = /logout.jsp

[users]
# format: username = password, role1, role2, ..., roleN
admin = admin, 4
user = user, 2
[roles]
admin = *
user = *
#User Get Specified
1 = 1
#User Get All
2 = 1
#Create Put Update
3 = 2:*
#Admin
4 = admin:*
test = 2:*
[urls]
/logout = logout
/** = authcBasic

最好, 亨里克

【问题讨论】:

【参考方案1】:

配置中一定有问题,您可以尝试https://github.com/dominicfarr/skybird-shiro 的演示应用程序并检查它是否有效。

【讨论】:

以上是关于Shiro 会话注销不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter - 注销链接不起作用 - 会话和 cookie 未销毁

结束会话,重置变量不起作用?

Spring SAML - 点击 URL '/saml/logout' 后全局注销不起作用

注销后Drupal 9.2登录不起作用

PHP在登录/退出时重新生成会话ID不起作用

会话结束事件不起作用