asp.net-mvc-5 – 如何使用asp.net身份更改当前用户的UserName后如何更改身份验证cookie
发布时间:2020-05-23 17:27:29 所属栏目: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;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 我的MVC 5模板中没有ApplicationRoleManage
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文
- asp.net-mvc – ASP MVC 3 RequireHttps属性将所有链接更改
- asp.net-mvc-4 – 如何开发一个ASP.NET Web API接受一个复杂
- ASP.NET:开始%%的#是什么意思?
- asp.net – IIS 7强制新鲜图像
- asp.net-mvc-3 – MVC3值不能为null 参数名称:值
- asp.net-mvc – 想从mvc使用index.html
- asp.net – 找不到可安装的ISAM. ‘/’应用程序中的服务器错
- asp.net – 如何序列化LINQ-to-SQL惰性列表
推荐文章
站长推荐
- ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别
- asp.net-mvc – ASP.NET MVC Json DateTime序列化
- 实体框架 – 等同于.HasOptional在实体框架核心1
- asp.net – 可接受的安全性:使用Paramatised SQ
- asp.net – RegisterForEventValidation只能在渲
- asp.net实现生成缩略图及给原始图加水印的方法示
- asp.net-mvc – 如何将Model字段值传递给javascr
- 来自UserControl的ASP.NET AJAX页面方法
- asp.net-mvc – 使用Data Annotation验证DateTim
- asp.net – HttpMessageHandler与DelegatingHand
热点阅读
