我正在创建一个带有Areas的mvc应用程序。 我需要对这些区域使用不同的身份验证方法。
我通常使用httpmodules进行身份验证,在http模块中我检查用户是否经过身份验证(我通常使用cookie),如果没有,我会重定向他。
所以我有一个用于验证整个应用程序的httpmodule,我想注册另一个httpmodule,用于在该区域进行身份验证。
我试过了:
这两个对我来说都不起作用,httpmodule从未被调用过。
由于
答案 0 :(得分:2)
您始终可以在覆盖AuthorizeCore的位置编写自定义AuthorizeAttribute。在此功能中,您始终可以重定向到特定的登录名。
public class CustomAuthorizationAttribute : AuthorizeAttribute
{
private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login");
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.User.Identity.IsAuthenticated)
{
// get userinformation
return true;
}
httpContext.Response.Redirect(NotifyUrl);
return false;
}
}
如果您没有包含重定向,则会重定向web.config中定义的loginurl