asp.net – IIdentity,IPrincipal,OWIN,IdentityUser和IUser如何
我正在努力弄清楚哪些.Net认证概念在OWIN的世界中仍然相关,现在已经过时了.从OWIN之前的ASP.Net时代开始,我习惯于处理.Net结构:FormsAuthentication,FormsAuthCookie,IPrincipal,IIdentity以及IPrincipal的自定义实现(继承自GenericPrincipal).使用最新版本的MVC(5),许多身份验证似乎已经改为基于OWIN.我特别想要了解的两件事:
1)IPrincipal和IIdentity以及GenericPrincipal在哪里适合? protected void Application_PostAuthenticateRequest(Object sender,EventArgs e) { //Decrypt forms authentication cookie and retrieve some userdata ... //Create CustomPrincipal (which inherits from GenericPrincipal) var principal = new CustomPrincipal(userId,roles,someAdditionalUserDataFromCookie); //Replace standard IPrincipal object on HTTPContext with custom principal HttpContext.Current.User = newUser } 2)哪里可以存储自定义身份验证数据?在OWIN之前的日子里,我使用AuthCookie的UserData值来存储自定义标识信息(除了用户名) – 例如OrgID.现在可以将它存储为ClaimsIdentity对象中的声明吗?这是一个好主意吗?它仍然可以存储在AuthenticationTicket中吗?我看这一切都错了吗?! 谢谢你的帮助. 解决方法
您将使用CookieAuthenticationMiddleware而不是FormsAuthenticationModule. CookieAuthenticationMiddleware仍然使用身份验证票证创建cookie,但格式不同.使用CookieAuthenticationMiddleware,可以从头开始设计索赔.因此,默认情况下,您使用ClaimsIdentity获取ClaimsPrincipal,尽管这些类实现了IPrincipal和IIdentity.
关于自定义身份验证数据,将它们存储为身份的声明部分.关于新世界的一个好处是,您不再需要使用PostAuthenticate根据故障单中的自定义数据来恢复您的主体.如果您在调用SignIn之前使用所有必需的声明创建您的身份,CookieAuthenticationMiddleware负责将声明中的声明部分序列化到cookie中的故障单中并完整地返回到身份中.此外,您不会使用HttpContext.Current.User来读取主体.您将使用请求对象上可用的扩展方法从OWIN上下文中读取,如下所示. Request.GetOwinContext().Authentication.User返回ClaimsPrincipal 从控制器,您可以使用IPrincipal的User,它再次从上下文返回一个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 动态加载不同控件时无法加载viewstate
- asp.net-mvc-3 – ASP.NET MVC3的AntiForgeryToken有哪些实
- asp.net-mvc – 在ASP.NET MVC中使用HTML表单?
- asp.net – 什么是Thread.CurrentPrincipal,它有什么作用?
- asp.net – 使用app_offline.htm使应用程序脱机,同时在更新
- .Net core webapi使用httpClient发送异步请求遇到TaskCance
- asp.net-mvc – 在EC2实例上运行的MVC应用程序无法访问RDS数
- asp.net-mvc – 如何绑定从linq到sql asp.net mvc的模型中排
- asp.net – 我们可以在网页中使用多种形式吗?
- asp.net-core – 如何在中间件类中访问IHostingEnvironment
- asp.net-mvc – 用于MVC导出到Excel的Kendo UI G
- .Net Core微服务入门全纪录(三)——Consul-服务
- entity-framework – 管理dbContext的生命周期
- asp.net-web-api – 如何在MVC4 Web API中的自定
- 如何在asp.net vnext中使用协议缓冲区?
- asp.net-mvc – MVC 3项目结构
- asp.net – 在开发,分段和生产环境之间区分web.c
- asp.net-mvc – ASP.NET MVC可以生成具有小写名称
- asp.net-mvc-4 – MVC SiteMap – 当不同节点指向
- asp.net – 从ASP .Net应用程序上传大文件