我在MVC控制器中有以下方法,当用户未登录时,该方法重定向到登录页面.
[Authorize] public ActionResult Search() { return View(); } [Authorize] public ActionResult Edit() { return View(); }
是否有一种快速/简单/标准的方法将第二个操作重定向到除web.config文件中定义的页面之外的其他登录页面?
或者我必须做些什么
public ActionResult Edit() { if (IsUserLoggedIn) return View(); else return ReturnRedirect("/Login2"); }
解决方法
我认为可以通过创建自定义授权过滤器:
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); } }
在你的行动中:
[CustomAuthorization(LoginPage="~/Home/Login1")] public ActionResult Search() { return View(); } [CustomAuthorization(LoginPage="~/Home/Login2")] public ActionResult Edit() { return View(); }