我希望能够获得用户的Windows登录名,而无需禁用表单身份验证。我知道这可能是通过使用以下代码行,并在.config文件中拒绝匿名登录,再加上启用Windows身份验证:
System.Web.HttpContext.Current.User.Identity.Name
这有可能实现吗?
谢谢。
我认为这是不可能的。表单身份验证和Windows身份验证是互斥的。您可以启用其中一个,当前用户标识将由相应的HTTP模块填充。
如果他们经过身份验证,您应该能够使用以下内容:
User.Identity.Name
或
Page.User.Identity.Name;
是的,您可以这样做,但仍然需要表单身份验证。您只需要通过会话变量或其他东西自行确定"已验证"即可。只需执行您已经说明的步骤,它将在默认情况下执行Windows身份验证。
如果您仍然需要表单身份验证,则需要Session
中的标志来了解用户是否通过了身份验证。因此,在登录过程中,您可以这样做:
Session["IsAuthenticated"] = true;
此外,当加载主页时,您可以这样做:
if (!Convert.ToBoolean(Session["IsAuthenticated"]))
{
// redirect to the login page
}