gpt4 book ai didi

asp.net-mvc - 使用 OWIN 基于区域的身份验证

转载 作者:行者123 更新时间:2023-12-02 22:35:01 27 4
gpt4 key购买 nike

我正在开发一个 MVC5 Web 应用程序。该应用程序有 2 个区域:“SU”和“App”。每个区域都应该独立验证。每个区域也有自己的登录页面。
我正在使用OWIN用于验证用户身份。
现在的问题是,我无法设置owin CookieAuthenticationOptions LoginPath基于用户请求的区域。
例如,如果用户请求 http://example.com/su/reports/dashboard ,我应该能够将它们重定向到 http://example.com/su/auth/login
同样,对于“App”区域,如果用户请求 http://example.com/app/history/dashboard ,我应该能够将它们重定向到 http://example.com/app/auth/login

我想避免自定义属性,因此尝试了以下代码,但它总是重定向到根登录路径,即 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)
});
}
}

我遵循正确的方法还是有其他方法可以实现相同的目的?谢谢!

最佳答案

CookieAuthenticationOptions.LoginPath 属性在启动时设置一次。为了根据请求使用不同的 URL,您可以使用通过 CookieAuthenticationOptions.Provider 设置的 ICookieAuthenticationProvider 的自定义实现,或者只为 OnApplyRedirect 设置自定义操作code> 内置 CookieAuthenticationProvider 中。第二个选项更简单,似乎足以满足您的情况。

这里是一个示例代码:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie",
LoginPath = new PathString("/auth/login"),
Provider = new CookieAuthenticationProvider { OnApplyRedirect = OnApplyRedirect }
});

public static void OnApplyRedirect(CookieApplyRedirectContext context)
{
var url = HttpContext.Current.Request.Url.AbsoluteUri;

string redirectUrl = "/auth/login";
if (url.ToLower().Contains("/su/"))
{
redirectUrl = "/su/auth/login";
}
else if (url.ToLower().Contains("/app/"))
{
redirectUrl = "/app/auth/login";
}

context.Response.Redirect(redirectUrl);
}

关于asp.net-mvc - 使用 OWIN 基于区域的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41598385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com