【发布时间】:2015-06-18 20:44:00
【问题描述】:
我正在实现一个带有表单身份验证的 ASP.NET MVC 项目。该项目已部署并运行正常,但现在我需要获取当前的 windows 用户,但我不明白。我试试这个:
System.Security.Principal.WindowsIdentity.GetCurrent().Name:
但在 IIS 中使用此配置返回 NT AUTHORITY\NETWORK SERVICE 或 AUTHORITY\IUSR。
- 匿名身份验证 = 已启用。
- 模拟 = 已禁用。
- 表单身份验证 = 已启用。
- Windows 身份验证 = 已禁用。
- 基本身份验证 = 已禁用。
当我尝试时:
-
匿名身份验证 = 已禁用。
-
模拟 = 启用。
-
表单身份验证 = 已禁用。
-
Windows 身份验证 = 已启用。
-
基本身份验证 = 已禁用。
System.Security.Principal.WindowsIdentity.GetCurrent().Name:域\用户
我正确获取了当前用户窗口,但是当我访问的网站没有 css 样式并且存在 javascript 错误。
Javascript 错误: 资源解释为样式表,但使用 MIME 类型 text/html 传输
我有这个网络配置:
<identity impersonate="true"/>
<authentication mode="Windows">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
我认为该错误是导致 IIS 配置的原因。 *所有文件夹权限:所有人
【问题讨论】:
-
除非您需要以给定用户的身份访问网络资源,否则不要使用模拟。只需使用 Windows 身份验证,然后引用控制器的 User.Identity.Name 属性或 HttpContext.Current.User.Identity.Name。即使您确实需要访问资源,也应该使用 WindowsImpersonationContext 即时执行此操作。
-
感谢您的回答!我会尝试:匿名身份验证 = 已禁用。模拟 = 禁用。表单身份验证 = 已禁用。 Windows 身份验证 = 已启用。基本身份验证 = 已禁用。我将从控制器库中执行 User.Identity.Name
标签: asp.net-mvc iis web-config forms-authentication windows-authentication