2010-11-26 35 views
0

一旦用户通过身份验证,我有一个对象userID。我应该在webapp中的spring/spring-security中存储用户ID密钥?

哪里是使用Spring-Security(这是一个webapp)在Spring中存储这个地方的“最佳”地方?

  • 会议似乎不雅,因为当时我有两个位置管理认证(需要特殊的代码来管理删除,当用户注销时无论什么原因,使sesion对象))
  • 的currentContext.getAutentication(getDetails (...)似乎很复杂,因为它似乎为每个请求生成细节对象

有很多选项,但最好似乎在某处接近Spring-Security身份验证机制。

回答

1

我不确定这个问题。您不必存储它。有多种方式来获得它。

  1. SecurtiryContextHolder如果您需要的UserDetails对象
  2. request.getRemoteUser()如果你只需要登录ID的
0

我相信它强烈依赖于你使用userID的方式。

例如:如果您需要在您的业务服务层深处使用userID,并且到目前为止对业务服务器层没有任何关于Web应用程序的东西(Session,...)的了解,那么这将是明智的使用HttpSession,以保持它“免费的网络东西”。

答案: 您可以考虑的第三种方法是使用会话作用域bean。

+0

我要访问控制器中的用户ID对象,从那里我将它当作服务的参数。 SecurityContextHolder看起来合乎逻辑,可以与认证机制保持一致,但是我没有看到这样简单的方法。会话不是很好,因为那时我必须编写代码来更新登录/注销时的会话。我只是想知道人们使用另一种常见的方法。很多我的服务方法都需要将此作为查找给定用户的数据库中的数据的关键。 – 2010-11-26 09:33:35

+0

会话范围Bean?这看起来像什么/工作? – Czar 2011-02-02 10:41:34

1

我不相信验证细节是为每个请求创建的。我相信他们是每次认证创建一次。

相关问题