我试图通过使用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的问题到达那里时。这样做,控制器上的用户属性从同一个地方获取信息?
我真的不确定从何处开始解决此问题,因为它似乎是配置问题与代码问题。有什么建议?
答案 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
个对象。