我想使用Windows身份验证检查用户的登录名。 我有这个作为我的控制器的构造函数:
public class HomeController : BaseController
{
public string UserIdentityName;
public HomeController()
{
UserIdentityName = System.Web.HttpContext.Current.User.Identity.Name;// HttpContext.Current.User.Identity.Name;
}
}
但UserIdentityName返回空字符串...
我的web.config上也有这个:
<authentication mode="Windows" />
任何想法?
答案 0 :(得分:12)
在解决方案资源管理器窗格中选择Web项目并按F4 。 (不是右键单击+属性,这是不同的)
在属性窗格中设置:
Windows身份验证:启用
匿名身份验证:已禁用
在Web.config中:<authentication mode="Windows"></authentication>
获取用户名:
HttpContext.Current.User.Identity.Name OR User.Identity.Name
运行你的项目,Happy Days!
答案 1 :(得分:5)
不要尝试访问控制器构造函数中任何与HttpContext相关的东西。您应该访问它的最早阶段是Initialize方法或控制器操作内部。
例如:
[Authorize]
public ActionResult Index()
{
string user = User.Identity.Name;
...
}
还要确保已在Web服务器上启用Windows身份验证(NTLM)。
答案 2 :(得分:2)
CHAPS,
如果您在IISExpress中运行。确保以下设置如下:
在web.config中
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
在记事本中打开projectName.csproj并更正以下设置:
<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>
<UseIIS>True</UseIIS>
答案 3 :(得分:1)
尝试添加:
<authorization>
<deny users="?" />
</authorization>
拒绝匿名用户访问。