如何在mvc互联网应用程序模板中重定向到管理员登录页面? (默认情况下,它重定向到帐户/登录页面))

时间:2014-07-08 07:06:51

标签: asp.net-mvc-4

  1. 我在用户站点有登录页面,在管理站点有管理登录页面
  2. 我有行动

    [授权] public ActionResult ChangeProfile(用户模型) {     //我的代码 }

  3. 和管理网站中的操作

     [Authorize(Roles="Admins")]
        public ActionResult UserManager(User model)
        {
          // my code
        }
    

    我喜欢当我访问行动时ChangeProfile =>重定向到用户站点中的登录页面(如果没有登录) 当我访问行动时UserManager =>重定向到管理站点中的adminlogin页面(如果没有使用Admins角色登录) 请帮我告诉我我能做什么,非常感谢你!

1 个答案:

答案 0 :(得分:1)

使用自定义AuthorizeAttribute并覆盖HandleUnauthorizedRequest

public class CustomAuthorize: AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAuthenticated)
                base.HandleUnauthorizedRequest(filterContext);
        else
            filterContext.Result = new RedirectToRouteResult(new 
               RouteValueDictionary("Admin login route"));
    }
}

[CustomAuthorize(Roles="Admins")]
public ActionResult UserManager(User model)
{
    // my code
}

如果你的web.config文件中有这样的东西:

<forms loginUrl="~/Account/LogOn" timeout="2880" />

将其更改为此但我不确定它是否有效但您可以尝试:

<forms loginUrl="/Account/LogOn" timeout="2880" />
相关问题