MVC控制器用户属性从哪里提取信息?

时间:2014-02-13 22:34:28

标签: asp.net-mvc

我试图通过使用MVC控制器上的User属性来获取登录的Active Directory用户。然后我使用该用户名来显示数据库中的数据。

userID = User.Identity.Name;

我经常收到用户的报告,说他们会看到其他人的数据。他们还报告说,如果他们关闭浏览器并重新登录,他们会看到正确的数据。我向控制器添加了一些代码来记录来自User.Identity.Name的值。果然,似乎User.Identity.Name在看似随机的时间返回不正确的用户。

我不确定为什么会这样。是否有可能IIS在提供请求后缓存用户凭据,然后将其传递给下一个请求?

我看过以下知识库文章的引用:http://support.microsoft.com/kb/946358,但是当我从一个询问System.Security.Principal.WindowsIdentity.GetCurrent.user的问题到达那里时。这样做,控制器上的用户属性从同一个地方获取信息?

我真的不确定从何处开始解决此问题,因为它似乎是配置问题与代码问题。有什么建议?

1 个答案:

答案 0 :(得分:0)

直接从.NET中的Controller类元数据中获取:

//
// Summary:
//     Gets the user security information for the current HTTP request.
//
// Returns:
//     The user security information for the current HTTP request.
public IPrincipal User { get; }

我非常确定get定义会从当前User中提取HttpContext个对象。