MVC授权 - 多个登录页面

Dav*_*enn 8 asp.net-mvc

我在MVC控制器中有以下方法,当用户未登录时,该方法重定向到登录页面.

[Authorize]
public ActionResult Search() {
  return View();
}

[Authorize]
public ActionResult Edit() {
  return View();
}
Run Code Online (Sandbox Code Playgroud)

是否有快速/简单/标准的方法将第二个操作重定向到web.config文件中定义的页面以外的其他登录页面?

或者我必须做类似的事情

public ActionResult Edit() {
  if (IsUserLoggedIn)
    return View();
  else 
     return ReturnRedirect("/Login2");
}
Run Code Online (Sandbox Code Playgroud)

小智 19

我认为可以通过创建自定义授权过滤器:

public class CustomAuthorization : AuthorizeAttribute
{
    public string LoginPage { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            filterContext.HttpContext.Response.Redirect(LoginPage);
        }
        base.OnAuthorization(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的行动中:

[CustomAuthorization(LoginPage="~/Home/Login1")]
public ActionResult Search() 
{
  return View();
}

[CustomAuthorization(LoginPage="~/Home/Login2")]
public ActionResult Edit() 
{
  return View();
}
Run Code Online (Sandbox Code Playgroud)