Pracuję nad aplikacją internetową MVC5. Ta aplikacja ma 2 obszary, "SU" i "App". Każdy obszar powinien być uwierzytelniany niezależnie. Każdy obszar ma również własne strony logowania.
Używam OWIN do uwierzytelniania użytkowników.
Problem polega na tym, że nie mogę ustawić wartości CookieAuthenticationOptions
LoginPath
w zależności od obszaru, o który prosi użytkownik.
Na przykład, jeżeli żądanie użytkownika http://example.com/su/reports/dashboard
, że powinienem być w stanie przekierować je do http://example.com/su/auth/login
Podobnie, dla obszaru „app”, jeżeli żądanie użytkownika http://example.com/app/history/dashboard
, powinienem być w stanie przekierować je do http://example.com/app/auth/login
Uwierzytelnianie w oparciu o obszar przy użyciu OWIN
chciałbym aby uniknąć atrybut niestandardowy i dlatego próbował następujący kod, ale to jest zawsze przekierowanie do ścieżki korzeń logowania tj http://example.com/auth/login
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
var url = HttpContext.Current.Request.Url.AbsoluteUri;
string loginPath = "/auth/login";
string areaName = string.Empty;
if (url.ToLower().Contains("/su/"))
{
areaName = "SU";
loginPath = "/su/auth/login";
}
if (url.ToLower().Contains("/app/"))
{
areaName = "APP";
loginPath = "/app/auth/login";
}
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie" + areaName,
LoginPath = new PathString(loginPath)
});
}
}
jestem po właściwej podejście czy jest jakiś inny sposób na osiągnięcie tego samego? Dzięki!