访问 Spring 的安全上下文的最佳实践

Posted

技术标签:

【中文标题】访问 Spring 的安全上下文的最佳实践【英文标题】:Best practice for accessing Spring's Security Context 【发布时间】:2015-06-22 05:53:45 【问题描述】:

我正在开发具有分层架构的应用程序:

演示 - 服务 - 数据访问

这个服务层的许多模块需要访问当前登录的用户。让这些模块直接访问安全上下文以获取UserDetails 对象是个好主意吗?

我在想,如果将来来自服务层的模块需要作为 Web 服务公开给其他应用程序,那么获取安全上下文可能不起作用。

【问题讨论】:

【参考方案1】:

您需要更具体一些,但通常不应让整个堆栈直接访问身份验证信息。相反,如果它是一个使用面向方面的方法安全性不适用的操作,则将用户信息作为普通方法参数传递给服务层。使用适当的机制(例如@AuthenticationPrincipal)将身份验证信息清晰地提供给您的***外观(Web 层或您拥有的)。

【讨论】:

以上是关于访问 Spring 的安全上下文的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

从 Spring 安全上下文中获取 userAuthentication 对象

Spring Security 最佳实践,看了必懂!

Spring 安全上下文 XML

如何在 Spring MVC 中模拟安全上下文以进行测试

Spring Security

从安全上下文中获取当前经过身份验证的用户作为 Spring Cache 的密钥