asp.net-mvc-5 – 如何使用asp.net身份更改当前用户的UserName后
发布时间:2020-12-16 00:32:36 所属栏目:asp.Net 来源:网络整理
导读:使用实体框架6.0.0-rc1(Visual Studio 2013 RC附带的)的asp.net身份版本1.0.0-rc1。 试图让用户有机会改变他们的UserName。 在AuthenticationIdentityManager中似乎没有任何功能,所以我使用EF更改数据(获取当前用户的用户对象,更改UserName并保存更改)。
使用实体框架6.0.0-rc1(Visual Studio 2013 RC附带的)的asp.net身份版本1.0.0-rc1。
试图让用户有机会改变他们的UserName。 问题是认证cookie保持不变,下一个请求失败,因为没有这样的用户。 使用过去的表单认证,我用下面的代码来解决这个问题。 var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent; FormsAuthentication.SetAuthCookie(newUserName,isPersistent); 我应该怎么用asp.net身份来更新cookies? UPDATE 以下代码似乎更新了身份验证cookie。 var identity = new ClaimsIdentity(User.Identity); identity.RemoveClaim(identity.FindFirst(identity.NameClaimType)); identity.AddClaim(new Claim(identity.NameClaimType,newUserName)); AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant (new ClaimsPrincipal(identity),new AuthenticationProperties {IsPersistent = false}); 剩下的问题是:如何从当前身份验证cookie中提取IsPersistent值? 解决方法
How do you login/authenticate a user with Asp.Net MVC5 RTM bits using AspNet.Identity?
private async Task SignInAsync(ApplicationUser user,bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await UserManager.CreateIdentityAsync(user,DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent },identity); } 对于RC1,您可以使用类似的代码。 AuthenticationManager.SignOut(); IdentityManager.Authentication.SignIn(AuthenticationManager,user.UserId,isPersistent:false); 对于持久值,您需要访问身份验证cookie并检索状态。 更新: 使用适当的AuthenticationType代替“承载”。同时确保在签发登录证时,您正在设置AuthenticationProperties.IsPersistent。 bool isPersistent=false; var authContext = await Authentication.AuthenticateAsync("Bearer"); if (authContext != null) { var aProperties = authContext.Properties; isPersistent = aProperties.IsPersistent; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 向.NET电子邮件添加附件
- 在ASP.NET Web应用程序中忽略其他文化的全局资源
- asp.net-core – 入口点没有合适的“程序”类型
- asp.net-core – AspNetCore Abstractions无法加载
- asp.net-mvc – 用任意内容封装可重用视图部分(即tile,port
- ASP.NET 4 URL路由Web表单打破了我对样式,脚本,图像等的相对
- asp.net – asp服务器错误’无法加载文件或程序集’,但程序
- asp.net-mvc – MVC Html.CheckBox和表单提交问题
- 打造更好用的 EF 自动审计
- asp.net-mvc – ASP.NET MVC Html.RadioButton异常
推荐文章
站长推荐
- asp.net – ObjectCache的“Set”和“Add”有什么
- asp.net-mvc – 在IIS 5.1上部署ASP.NET MVC(Win
- ASP.NET – ERR_EMPTY_RESPONSE /重置连接/无法显
- Asp.Net MVC5 – Html.Action – 属性路由 – 导
- asp.net – Razor视图引擎intellisense无法正常工
- asp.net-mvc-3 – 剃刀语法动态命名HTML元素
- 子类中的ASP.NET Repeater项
- asp.net – 为什么无法使用ID“Server”进行控制
- asp.net – 我们如何在共享工作环境中使用版本控
- asp.net-mvc-3 – MVC3客户端验证无法使用Ajax.B
热点阅读