您能解释HttpApplication.AuthenticateRequest
中HttpApplication.AuthorizeRequest
和ASP.NET MVC 3
之间的差异吗?他们什么时候会发生?假设这种情况:
我的User
有一个名为IsBanned
的属性,我想在每个请求中检查他/她的IsBanned
属性。如果是true
,我会将User
重定向到错误页面。但并非针对所有请求,只是请求[Authorize]
属性对其操作进行签名。好的,对于这类行为,HttpApplication.AuthenticateRequest
会发生HttpApplication.AuthorizeRequest
还是其他什么?
我知道我可以在SignIn|LogOn
操作中检查此属性。但我的意思是:
IsBanned
,它是false
[Authorize]
属性提前致谢。
答案 0 :(得分:1)
我认为你不需要处理HttpApplication.AuthenticateRequest
或HttpApplication.AuthorizeRequest
。我会使用自定义Authorize
属性来解决它。
public class MyAuthorizeAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(HttpContextBase httpContext) {
bool authorizerPrimarily = base.AuthorizeCore(httpContext);
if(authorizedPrimarily){
return user_not_banned;
}
return authorizerPrimarily;
}
}
您可以从httpContext.User.Identity.Name
获取用户名。用它来从数据库中获取数据。
评论-1更新
要将被禁用户重定向到特定页面,您可以执行以下操作:
if(authorizedPrimarily){
if(user_banned){
httpContext.Response.Redirect("url of banned message");
return false;
}
return true;
}