Asp.net Identity 2.0 - 为用户添加内存角色

时间:2018-03-11 21:37:50

标签: asp.net-mvc asp.net-identity

我正在设计一个系统,管理员可以在这个系统中以用户身份登录以代表他们修复等等。我很喜欢这样,所以他们在此期间还有其他角色。有没有办法在内存中添加角色,或者以退出/关闭浏览器时结束的方式添加角色。我可以从管理员屏幕添加角色,并在该用户再次登录时删除,但很容易出错。欢呼声。

这不是关于如何进行模仿的。我已经完成了那部分工作。我希望能够为用户添加额外的角色,但仅限于他们被模拟时(因此可以使用一些额外的诊断屏幕)。我认为下面这个人正在回答我的问题时解释说,当我添加一个声明时,我将它添加到cookie中。我当时正在考虑将这些信息保存回数据库。我将在明天尝试该代码,但我怀疑这是我需要进入的方向。这是一个愚蠢的问题,但最近有规则改变,我今晚注意到人们有点热心纠正语法等。

1 个答案:

答案 0 :(得分:0)

ASP.NET Core 2.0 Identity使用基于声明的身份验证。每个角色都是一个主张。声明通过多种方式保留在会话中,但通常在登录时发出的应用程序cookie或JWT身份验证令牌(不在内存中)。

使用SignInManager创建用户主体并添加额外声明应该非常简单:

// create the user principal
var principal = await signInManager.CreateUserPrincipalAsync(user);

// add the extra role
principal.Identities.First().AddClaim(new Claim(ClaimTypes.Role, SomeRole));

// issue the application cookie
await HttpContext.SignInAsync(principal)