【问题标题】:Springs Simple <remember-me/> not working :-(Springs Simple <remember-me/> 不工作:-(
【发布时间】:2011-04-11 09:11:25
【问题描述】:

我正在尝试使用 Spring Security 的&lt;remember-me/&gt; authentification。我的安全上下文中的行如下所示:

 <security:remember-me key="89dqj219dn910lsAc12" user-service-ref="jpaUserDetailsService"/>

虽然我使用自己的UserDetailsService 实现(经过测试和工作),但我也尝试过使用默认的实现同样的问题,即:

  1. 选中“记住我”复选框登录,会按预期生成 cookie:

    名称:SPRING_SECURITY_REMEMBER_ME_COOKIE;值:c2FzczoxMjg1NTIxOTI1NzY4OmIxODQ5YTE2ZDY1MDVmZDFhNWRlN2Y2NzFlMzc1MmI0;主机:本地主机;路径:/webapp;安全:否;有效期至:2010 年 9 月 26 日星期日 17:25:25 GMT)

  2. 浏览器重启

  3. cookie 还在

  4. 尝试访问任何安全页面以“拒绝访问”错误结束:

    org.springframework.security.access.AccessDeniedException: 访问被拒绝

    身份验证对象作为字符串:org.springframework.security.authentication.RememberMeAuthenticationToken@ffcaab94:主体:de.myapp.businessobjects.AppUser@35c12e:用户名:用户名;密码保护];启用:真; AccountNonExpired:真;凭据非过期:真; AccountNonLocked:真;个人信息:32768; ;凭证:[受保护];已认证:真实;详细信息:org.springframework.security.web.authentication.WebAuthenticationDetails@957e:RemoteIpAddress:127.0.0.1;会话ID:空;未授予任何权限

我很困惑,不知道出了什么问题或从哪里开始调试。请帮忙?

【问题讨论】:

    标签: spring spring-mvc spring-security remember-me


    【解决方案1】:

    看起来用户已成功通过身份验证,但由于某种原因他没有权限(即角色)。因此,请确保您的 UserDetailsService 返回的用户详细信息从 UserDetails.getAuthorities() 返回适当的权限。

    【讨论】:

    • 啊……很好的提示!你是对的,我忘了测试我的 UserDetailsS​​ervice.getAuthorities() 实现 - 瞧,它实际上 is 有问题。谢谢!
    • 亲爱的,对不起。我嘲笑了角色,但仍然遇到类似的错误:“... SessionId: null; Granted Authorities: ROLE_USER” Pitty。顺便说一句,为什么 SessionId null 无论如何?
    • @erlord:我认为 sessionid 不是问题。这看起来像一个普通的AccessDeniedException,也许ROLE_USER 不足以执行请求的操作。
    • 如果是这样,为什么它首先起作用,即登录时?相同的 URL 在 before 重启和失败 after ... 我必须为 分配角色吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2021-02-04
    • 2011-04-14
    • 2012-04-21
    • 2012-04-29
    相关资源
    最近更新 更多