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
 
热点阅读
            