我有一个项目布局,如:
Areas | Admin
Areas | FrontEnd
我希望每个区域[Authorize]
个用户(因为管理员会在FrontEnd
中为用户使用不同的表。当我在管理区域的Controller中使用[Authorize]
标记时,它将我重定向到在 root web.config文件中设置的表单身份验证登录URL。
是否可以按区域覆盖?我看到每个区域都有一个Web.config文件,但如果我在那里添加它,它似乎忽略了表单身份验证设置。
如果我以错误的方式接近这一点,我很乐意接受一些建议。
编辑:
我尝试了一些东西,但不知道这是不是最好的做法。基本上,实现我自己的CustomAuth
属性并重定向:
public class CustomAuth : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (!base.AuthorizeCore(httpContext))
httpContext.Response.Redirect("~/Admin/Account");
return true;
}
}
这是一种有效的方法吗?
答案 0 :(得分:1)
我最终使用自己的[Authorise]
属性并重定向到未经授权的访问。
public class AuthorizeArea : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("/Admin/Account");
}
}