在Windows身份验证模式的MVC4中始终HttpContext.Current.User.Identity.IsAuthenticated = false并且无法正常工作

时间:2014-07-07 20:06:02

标签: c# asp.net-mvc asp.net-mvc-4 windows-authentication custom-authentication

我正在尝试在身份验证模式为“windows”

时在MVC中执行customAuthorization
    public override void OnAuthorization(AuthorizationContext filterContext)
    {

        #region if
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        { .......}
     }

但IsAuthenticated总是返回false。我不知道如何在onAuthorization(..)之前调用windows身份验证。

但是当我喜欢这样的时候:

public override void OnAuthorization(AuthorizationContext filterContext)
    {

        #region if
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        { .......}else{
         **base.OnAuthorization(filterContext);**
         }
     }

onAuthorization()方法由于base.onAuthorization()而重复命中,并且在第二次尝试中IsAuthenticated返回true。

我可以知道这种行为的原因吗?

当我用谷歌搜索结果时,结果表明IsAuthenticated在表单身份验证模式下是真的,但在Windows模式下不行。如下面的链接所述

http://www.anujvarma.com/windows-ad-authentication-and-the-authorize-attributelogin-popup/

请帮助我。

1 个答案:

答案 0 :(得分:2)

问题解决了。我在IIS服务器设置中禁用了allowanonymous属性,它开始按预期工作,即用户在进入授权(..)之前进行了身份验证。