2

我已经使用 cas wiki 上的 Spring 安全教程将 CAS 集成到 Spring Security。现在我想获取当前用户,不知道如何!

我应该从 Spring security 还是 CAS 获得它?

SecurityContextHolder.getContext().getAuthentication()返回空值:|

4

2 回答 2

0

如果 SecurityContextHolder.getContext().getAuthentication() 为 null 表示用户尚未通过身份验证。

关于 CAS 的一些提示

  1. 确保您使用 SSL 与 CAS 通信,因此 CAS 必须托管在 SSL 端口(443 或 8443)上

  2. 确保您的 Spring 应用程序托管在 SSL 端口上,以便 CAS 可以通过 SSL 服务器调用您的 Spring。

常见错误是 CAS 和 Spring 应用程序都不在 SSL 端口上。如果是这种情况,请从 www.startssl.com 获取免费 SSL 证书

于 2012-11-04T12:01:00.980 回答
0

发现问题了!我打算使用自己的访问控制系统,所以我评论了负责检查用户角色以访问 URL 的过滤器。显然,如果我不拦截 URL,则无法通过该请求访问 Spring Security 的上下文(或者至少看起来像那样!我不是 Documents 的忠实粉丝,所以我尝试了代码,当我遇到异常时,我试着猜测原因!我真的应该停止这样做 :| 但无论如何,既然我拦截了 URL,SecurityContextHolder.getContext().getAuthentication() 不再返回 null :)

于 2012-11-06T20:39:39.170 回答