我已经使用 cas wiki 上的 Spring 安全教程将 CAS 集成到 Spring Security。现在我想获取当前用户,不知道如何!
我应该从 Spring security 还是 CAS 获得它?
SecurityContextHolder.getContext().getAuthentication()
返回空值:|
我已经使用 cas wiki 上的 Spring 安全教程将 CAS 集成到 Spring Security。现在我想获取当前用户,不知道如何!
我应该从 Spring security 还是 CAS 获得它?
SecurityContextHolder.getContext().getAuthentication()
返回空值:|
如果 SecurityContextHolder.getContext().getAuthentication() 为 null 表示用户尚未通过身份验证。
关于 CAS 的一些提示
确保您使用 SSL 与 CAS 通信,因此 CAS 必须托管在 SSL 端口(443 或 8443)上
确保您的 Spring 应用程序托管在 SSL 端口上,以便 CAS 可以通过 SSL 服务器调用您的 Spring。
常见错误是 CAS 和 Spring 应用程序都不在 SSL 端口上。如果是这种情况,请从 www.startssl.com 获取免费 SSL 证书
发现问题了!我打算使用自己的访问控制系统,所以我评论了负责检查用户角色以访问 URL 的过滤器。显然,如果我不拦截 URL,则无法通过该请求访问 Spring Security 的上下文(或者至少看起来像那样!我不是 Documents 的忠实粉丝,所以我尝试了代码,当我遇到异常时,我试着猜测原因!我真的应该停止这样做 :| 但无论如何,既然我拦截了 URL,SecurityContextHolder.getContext().getAuthentication() 不再返回 null :)