我有以下内容:
[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在重定向时使用属性路由?
答案 0 :(得分:9)
在App_Start/Startup.Auth.cs
中,您需要更改重定向的默认登录路径。
LoginPath = new PathString("/login")
原因是由于您添加了属性路由,因此现有路由无效。
答案 1 :(得分:1)
我从某个网站复制,我使用记事本进行组合,但理想情况是在这里。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
IPrincipal user = filterContext.HttpContext.User;
if (!user.Identity.IsAuthenticated)
{
// Redirect to login page
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", "Login" },
{ "action", "NoAccess" }
});
}
}