ASP.NET MVC全局身份验证和AllowAnonymous

时间:2018-11-09 16:43:41

标签: c# asp.net asp.net-mvc authentication asp.net-mvc-5

我对ASP.NET MVC还是陌生的,试图了解全局身份验证筛选器和匿名访问。

我有一个自定义的AuthenticationFilter:

public class CustomAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
{
    public void OnAuthentication(AuthenticationContext filterContext)
    {
        //Do some stuff
    }

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    {
        var user = filterContext.HttpContext.User;
        if (user == null || !user.Identity.IsAuthenticated)
            filterContext.Result = new HttpUnauthorizedResult();
    }
}

...并且我已经将它添加到FilterConfig.cs中,成为了全局的,

filters.Add(new CustomAuthorizationAttribute());

当应用加载时,它陷入了循环循环-登录页面仅保持重定向。

登录页面具有AllowAnonymous属性。 AllowAnonymous跳过AuthorizationAttribute步骤,因此可以理解地不会影响身份验证过滤器。

我的问题是:

1)如果身份验证范围是要验证用户,则一定要允许AllowAnonymous绕过AuthenticationFilter步骤吗?通过身份验证后,您将不再是匿名用户……请有人可以解释我所缺少的内容吗?

2)如果我想锁定站点,我是否在正确的轨道上拥有全局身份验证筛选器?如果是这样,我如何摆脱这个无限循环并允许显示登录页面?

谢谢!

0 个答案:

没有答案