我正在尝试使用Spring Security的<remember-me/>
authentification。我的安全上下文中的行如下所示:
<security:remember-me key="89dqj219dn910lsAc12" user-service-ref="jpaUserDetailsService"/>
虽然我使用自己的UserDetailsService
(已测试和工作)实现,但我也尝试使用默认版本运行同一个问题,即:
选中“记住我”复选框,按预期生成cookie:
姓名:SPRING_SECURITY_REMEMBER_ME_COOKIE;值:c2FzczoxMjg1NTIxOTI1NzY4OmIxODQ5YTE2ZDY1MDVmZDFhNWRlN2Y2NzFlMzc1MmI0;主持人:localhost;路径:/ webapp;安全:不;有效期至:2010年9月26日星期日17:25:25 GMT)
浏览器重新启动
Cookie仍然存在
尝试访问任何受保护的页面以“拒绝访问”错误结束:
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;没有授予任何权力
我很困惑,不知道出了什么问题或者从哪里开始调试。请帮帮忙?
答案 0 :(得分:1)
看起来用户已成功通过身份验证,但由于某种原因,他没有权限(即角色)。因此,请确保UserDetailsService
返回的用户详细信息会从UserDetails.getAuthorities()
返回相应的权限。