Springs简单<remember-me>不工作: - (</remember-me>

时间:2010-09-12 17:39:10

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

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

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

虽然我使用自己的UserDetailsService(已测试和工作)实现,但我也尝试使用默认版本运行同一个问题,即:

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

    姓名:SPRING_SECURITY_REMEMBER_ME_COOKIE;值:c2FzczoxMjg1NTIxOTI1NzY4OmIxODQ5YTE2ZDY1MDVmZDFhNWRlN2Y2NzFlMzc1MmI0;主持人:localhost;路径:/ webapp;安全:不;有效期至:2010年9月26日星期日17:25:25 GMT)

  2. 浏览器重新启动

  3. Cookie仍然存在

  4. 尝试访问任何受保护的页面以“拒绝访问”错误结束:

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

    身份验证对象为String:org.springframework.security.authentication.RememberMeAuthenticationToken@ffcaab94:Principal:de.myapp.businessobjects.AppUser@35c12e:用户名:username;密码保护];启用:true; AccountNonExpired:true; credentialsNonExpired:true; AccountNonLocked:true;个人信息:32768; ;证书:[保护];认证:真实;详细信息:org.springframework.security.web.authentication.WebAuthenticationDetails@957e:RemoteIpAddress:127.0.0.1; SessionId:null;没有授予任何权力

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

1 个答案:

答案 0 :(得分:1)

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