asp.net-mvc – 使用OWIN进行基于区域的身份验证
发布时间:2020-12-16 03:24:40 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个MVC5 Web应用程序.该应用程序有2个区域,’SU’和”App’.每个区域都应独立进行身份验证.每个区域也有自己的登录页面. 我使用 OWIN来验证用户. 现在的问题是,我无法根据用户请求的区域设置owin CookieAuthenticationOptions LoginPath. 例如,如
我正在开发一个MVC5 Web应用程序.该应用程序有2个区域,’SU’和”App’.每个区域都应独立进行身份验证.每个区域也有自己的登录页面.
我使用 OWIN来验证用户. 现在的问题是,我无法根据用户请求的区域设置owin CookieAuthenticationOptions LoginPath. 例如,如果用户请求http://example.com/su/reports/dashboard,我应该可以将它们重定向到http://example.com/su/auth/login 同样,对于“应用”区域,如果用户请求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的自定义实现,或者只在内置的CookieAuthenticationProvider中为OnApplyRedirect设置自定义操作.第二个选项更简单,看起来足够你的情况.
这是一个示例代码: 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-core-mvc – 在Mvc6中,WriteAsync函数在哪里?
- asp.net-mvc – 如何在ASP.NET应用程序中设置S-MaxAge Cach
- asp.net – 文档生成 – 我应该选择哪些框?
- asp.net – 如何从CLASS(Inside Class)调用ASPX页面
- 基于Asp.Net MVC动作的自定义授权
- asp.net-mvc-3 – 在基于.NET MVC 3的项目中使用Specflow在
- asp.net-mvc – asp.net mvc单选按钮状态
- asp.net – vb中的Datalist.试图获取datalist中行或单元格的
- asp.net – 使用Page.Render覆盖后缓存替换
- asp.net-mvc-3 – 在MVC 3上启用黄屏死机
推荐文章
站长推荐
热点阅读