【发布时间】:2014-12-12 11:47:56
【问题描述】:
我有以下:
[Route("whitelist")]
[Authorize(Roles = "Administrator")]
public ActionResult Whitelist() {
var vm = new WhitelistViewModel();
return View(vm);
}
[Route("login")]
[AllowAnonymous]
public ActionResult Login(string returnUrl) {
ViewBag.ReturnUrl = returnUrl;
return View();
}
但是,当我以未经身份验证的用户身份导航到 /whitelist 时,我会导航到无效的 /Account/Login。在这种情况下,我如何告诉 MVC5 在重定向时使用属性路由?
【问题讨论】:
-
为什么无效?您在
Whitelist()方法上有[Authorize(Roles = "Administrator")],因此如果您未授权,您将被重定向到Login()。你期望发生什么? -
@StephenMuecke 无效,因为登录的路由是“登录”,通过属性路由覆盖。
-
请看这个stackoverflow.com/questions/7080872/… Override OnActionExecuting。我们可以在这个动作中做很多事情,类似于我们在 page_load 之前在页面预加载中做一些事情。
-
@user666,对不起,不明白你在说什么。您是否有多个名为
Login()的方法,而这一个不在AccountController中? -
@StephenMuecke - 路由 /Account/Login 无效,因为我已经覆盖了它!!!