c# – 如何为登录用户添加和启用OWIN角色?
发布时间:2020-12-15 22:06:13 所属栏目:百科 来源:网络整理
导读:我正在使用带有OWIN身份验证的MVC 5.向已登录用户添加角色时,只有在用户重新登录后才会生效: [Authorize(Roles = "Role1")] public async TaskActionResult Action() { var currentUser = AuthenticationManager.User; var currentUserId = currentUser.Ide
我正在使用带有OWIN身份验证的MVC 5.向已登录用户添加角色时,只有在用户重新登录后才会生效:
[Authorize(Roles = "Role1")] public async Task<ActionResult> Action() { var currentUser = AuthenticationManager.User; var currentUserId = currentUser.Identity.GetUserId(); var result = await UserManager.AddToRoleAsync(currentUserId,"Role2"); //result confirms role added return RedirectToAction("AnotherAction","Controller"); } // not accessible until relog [Authorize(Roles = "Role2")] public ActionResult AnotherAction() { return View(); } 如何使角色更改立即生效? 解决方法
我相信AddUserToRole方法在数据库级别执行赋值.虽然这可能也需要发生,但您需要做的是刷新当前身份.
简短回答:将IPrincipal投射到ClaimsPrincipal并将IIdentity转换为ClaimsIdentity.然后你可以添加声明. ClaimsPrincipal currentPrincipal = (ClaimsPrincipal)this.User; ClaimsIdentity currentIdentity = (ClaimsIdentity)currentPrincipal.Identity; currentIdentity.AddClaim(new Claim(ClaimTypes.Role,"Role2")); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读