【问题标题】:get user windows with Forms authentication ASP.NET MVC使用表单身份验证 ASP.NET MVC 获取用户窗口
【发布时间】: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


【解决方案1】:

我有同样的问题...我几乎尝试了所有方法,但没有任何效果。然后我在我的 webconfig 中添加了这一行,它起作用了。
<authorization> <deny users="?" /> </authorization>

还要确保您的身份验证模式设置为 windows。 &lt;authentication mode="Windows" /&gt;

EG:<system.web> <compilation debug="true" targetFramework="4.6.1" /> <httpRuntime targetFramework="4.6.1" /> <authentication mode="Windows" /> <authorization> <deny users="?" /> </authorization> </system.web>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多