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