overrideauthentication属性不起作用?ASP.NET MVC 5.
-
20-12-2019 - |
题
我有一个超级简单的身份验证属性,即我尝试在ASP.NET MVC 5应用程序中实现,我有一些麻烦。我希望在全局中应用该属性,除了控制器内的特定操作(例如登录表单和主页)。
我试过用没有运气的[OverrideAuthentication]
属性装饰动作。它给了我一个重定向循环错误,因为应用程序仍然在登录表单上运行身份验证,并继续尝试一遍又一遍地重定向到登录表格。
还有其他人看到这种行为吗?任何想法在这里填充了什么?
通过示例,我创建了一个当前未实现的超级简单过滤器:
public class BasicAuthenticationAttribute
: ActionFilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
throw new NotImplementedException();
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
throw new NotImplementedException();
}
}
.
如果我像这样装饰我的控制器/动作:
[BasicAuthentication]
public class AccountController : Controller
{
[HttpGet]
[OverrideAuthentication]
public ActionResult Login()
{
return View();
}
}
.
当我导航到登录操作时,我得到了一个未实现的异常,即使该操作根本不应该运行身份验证码。我误解了覆盖应该如何工作吗?
解决方案
我认为您对授权(尽可能多的人)对认证困惑。制作[基本素静音IncicitionAttribute并在全球范围内注册它是否没有意义,因为才能在登录时发生身份验证,而不是每个请求。
授权是在用户登录以检查用户是否具有执行特定操作的特权,并且在全局授权使其有意义。MVC中的授权由[专制特列表]处理,如果需要自定义授权检查的方式,则可以继承它。您还可以将其注册为全局过滤器。
[allaNanonMousAttribute]与[专制特有]一起工作,基本上告诉它跳过授权检查。还应注意,除非它与[专制特拉西特]一起使用,否则[allowAnmonamousAttribute]将没有效果。
不隶属于 StackOverflow