Я долгое время искал решение этой проблемы, но, к сожалению, не нашел ни одного красивого и элегантного способа справиться с этим.MVC 6 Области и несколько страниц входа в систему redirect
Вот подробности:
Мои MVC 6 Использование приложений Области. Каждая область имеет отдельные каталоги для контроллеров, представлений и т.д.
Аутентификация на основе стандарта из шаблона веб-приложений окно с учетными записями пользователей, хранящейся в SQL сервере
То, что я хочу, чтобы достичь является:
- Когда пользователь входит в/AreaA/Restricted/Page, то он перенаправляется в/AreaA/Account/Вход
- Когда пользователь вводит/AreaB/Restricted/Page то он перенаправляется в/AreaB/Account/Вход и т.д. ..
Несмотря на то, что я могу изменить страницу stanard входа в систему перенаправления с «/ Account/Войти» в нечто иное, как это:
services.Configure<IdentityOptions>(options=> { options.Cookies.ApplicationCookie.LoginPath = new Microsoft.AspNet.Http.PathString("/HardcodedAreaName/Account/Login"); });
Я не могу перенаправить в различные действия/входа страниц для каждой области.
До MVC 6 я был в состоянии использовать AuthorizeAttribute с параметром URL:
public class CustomAuthorization : AuthorizeAttribute
{
public string Url { get; set; }
// redirect to login page with the original url as parameter.
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult(Url + "?returnUrl=" + filterContext.HttpContext.Request.Url.PathAndQuery);
}
}
, а затем передавая область зависимую URL украшая каждый контроллер:
[CustomAuthorization(Url = "/Admin/Account/Login"]
public class AdminAreaController : Controller
{ ...
Но это больше не работает :(
ли вы когда-нибудь в конечном итоге заставить это работать? Как вы вносили изменения в метод 'Configure', поскольку' services' недоступен? –