我创建了一个基于角色的菜单,我按照本教程进行了操作.在该页面的某些位置,您将看到以下代码行:
String[] roles = Roles.GetRolesForUser();
Run Code Online (Sandbox Code Playgroud)
它返回当前登录用户的所有角色.我想知道如何使用新的ASP.NET身份系统实现这一目标?
它仍然是新的,没有太多可以找到它.
我正在使用ASP.NET MVC 5.1与Owin和声明身份验证.
用户更改其电子邮件后,我需要更新用户声明,所以我尝试在控制器中:
ClaimsIdentity identity = (ClaimsIdentity)User.Identity;
Claim claim = identity.FindFirst(ClaimTypes.Email);
identity.RemoveClaim(claim);
identity.AddClaim(new Claim(ClaimTypes.Email, newEmail));
IOwinContext context = new OwinContext();
context.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
context.Authentication.SignIn(identity);
Run Code Online (Sandbox Code Playgroud)
索赔已更改,但当我刷新页面时,电子邮件声明再次原始...
似乎cookie没有更新.知道我做错了什么吗?
是否有可能从身份中获取"IsPersistent"的值,所以当我再次签名时,我将获得相同的值?
谢谢,
米格尔