2

在他登录到我的 ASP.Net MVC 4 网站后,我需要保留一些关于用户的静态数据。一切都挂在温莎城堡的容器中。

登录过程调用身份验证服务,该服务返回用户数据,这是会话稍后处理和其他服务调用所需的。

我看过这篇文章:MVC Custom Authentication, Authorization, and Roles Implementation。但问题是它在静态类中使用了服务定位,这是有问题的。

在这样的设置中,我应该如何存储用户数据以在整个会话中使用?

编辑:我正在使用持久性 cookie,所以当用户返回站点时,我需要以某种方式重新创建我的用户数据。

4

1 回答 1

3

在您的 LogOn 方法中,一旦您授权了用户并从数据库中检索了用户详细信息,您就可以将它们存储在会话中:

UserDetail details = ...
Session["user_details"] = details;

稍后当您需要它们时:

UserDetail details = Session["user_details"] as UserDetail;

作为替代方案,您可以编写一个自定义 MembershipProvider,如果存在,它将从会话中读取此信息,如果不存在,它将查询数据库以检索它。

另一种可能性是通过覆盖 AuthorizeCore 方法来拥有自定义 Authorize 属性,您可以在该方法中设置包含用户详细信息并从会话中读取的自定义主体。

于 2012-10-11T09:30:18.650 回答