使用Window身份验证时,User.Identity.Name为空

时间:2013-03-25 18:22:53

标签: asp.net asp.net-mvc

我在MVC 4中有一个网站,在IIS7上运行.net 4.5 例如:www.mysite.com和文件夹www.mysite.com/admin

www.mysite.com正在使用表单身份验证并允许匿名访问某些页面,我希望使用www.mysite.com/admin使用窗口身份验证。

我在IIS安全性中为该文件夹设置了使用窗口身份验证(它不是IIS中的应用程序)

在我的管理员控制器中,我需要从域中捕获用户名,并且它始终为空,代码如下:

   WindowsIdentity winId = WindowsIdentity.GetCurrent();         
  if (winId != null)
  {
   string name = winId.Name;        
  }

User.Identity.Name也是空的 请让我知道我错过了什么。

我确信这是非常常见的事情,并且无法弄清楚为什么它不能与MVC一起工作,我有旧网站使用网页表单并且具有相同的设置并且它正在工作。

提前致谢

1 个答案:

答案 0 :(得分:3)

如果您对该页面使用Windows身份验证,请尝试以下操作,看看它是否有任何数据。听起来你可能已经试过这个,但我没有看到包含的Page对象。

确保您的web.config启用了Windows身份验证。

<authentication mode="Windows">
     </authentication>

string user = Page.User.Identity.Name;

希望这有助于我可能会研究内置角色和会员资格功能,我不熟悉您道歉的路线。

http://www.codeproject.com/Articles/342061/Understanding-ASP-NET-Roles-and-Membership-A-Begin