首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shiro:会话已失效

Shiro:会话已失效
EN

Stack Overflow用户
提问于 2012-01-16 23:27:17
回答 2查看 7.2K关注 0票数 3

我在一个web应用程序中使用Apache Shiro。登录和身份验证检查工作得很好,但我在实现注销/重新登录机制时遇到了问题:注销是在servlet中完成的:

代码语言:javascript
复制
    private void logout(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
            log.debug("do logout");
            Subject subject = SecurityUtils.getSubject();
            subject.logout();
            resp.sendRedirect("end.html");
    }

但在注销并重新登录后,我得到以下错误:

代码语言:javascript
复制
org.apache.shiro.session.InvalidSessionException: java.lang.IllegalStateException:
  getAttribute: Session already invalidated
  at org.apache.shiro.web.session.HttpServletSession.removeAttribute(HttpServletSession.java:167)
at org.apache.shiro.session.ProxiedSession.removeAttribute(ProxiedSession.java:135)
at org.apache.shiro.subject.support.DelegatingSubject.clearRunAsIdentities(DelegatingSubject.java:424)
at org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:246)

登录通过以下方式完成(在UI组件的方法中,我使用ZK作为UI框架):

代码语言:javascript
复制
  private void tryLogin(UsernamePasswordToken token) {
        Subject subject = SecurityUtils.getSubject();
        try {
              subject.login(token);
              ...

我不理解异常,因为从shiro注销会使会话无效,重新登录应该会访问新的会话。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-18 03:14:23

在Shiro 1.2之前的版本中,如果有人(或其他东西)在调用Subject.logout()之前使会话无效(例如,httpSession.invalidate(),然后是subject.logout()),就会发生这种情况。

这在SHIRO-298中被认为是一个错误,并且已经在1.2.0-SNAPSHOT构建中解决了。您可以使用当前的快照构建之一,也可以在Shiro 1.2.0发布时使用它。

票数 3
EN

Stack Overflow用户

发布于 2012-01-17 23:27:10

看起来您的UI框架在注销后没有重新生成会话。您可以尝试在登录调用之前强制新的会话调用subject.getSession()。如下所示:

代码语言:javascript
复制
private void tryLogin(UsernamePasswordToken token) {
        Subject subject = SecurityUtils.getSubject();
        Session session = subject.getSession();
        try {
              subject.login(token);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8882153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档