用户通过身份验证后是否会触发事件(Windows)?我正在Application_Start()执行,但它返回false User.Identity.IsAuthenticated
。
我想要的是手动创建和添加角色给用户。
答案 0 :(得分:1)
我用过这个:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is WindowsIdentity)
{
if (string.IsNullOrEmpty(Usuario.Nome))
{
确保,在项目属性中(alt +在项目中输入)点击WEB查看NTLM AUTHENTICATION。
这对我有用。现在HttpContext.Current.User.Identity
不再为空
答案 1 :(得分:0)
Application_Start()。此外,它仅在应用程序的生命周期中调用一次。有人说过,你将无法在那时授权所有用户。客户端计算机上的当前Windows用户信息由Web浏览器通过涉及与Web服务器 [Wiki]进行散列的加密交换提供。只有这样您才能授权用户。因此, User.Identity.IsAuthenticated 应该适用于页面加载(请参阅下面的代码)。您可以提取常用方法所需的逻辑,并在第一次加载页面时调用它
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
Page.Title = "Home page for " + User.Identity.Name;
// add your logic here
}
else
{
// you get here if auth failed.
Page.Title = "Home page for guest user.";
}
}
更新后的详细信息:
如果角色不存在,我会使用Application_Start()来检查和添加角色。
if (! Roles.RoleExists("Auditors"))
Roles.CreateRole("Auditors");