切换当前角色 - .NET Core Identity

Switch current role - .NET Core Identity

我正在使用 .NET Core 3.1 和 Identity。

我有一个管理员用户 roles = {Admin, Customer} 和其他用户 roles = {User}。 所以我希望管理员可以切换角色,在角落里有一个下拉菜单,比如 "Switch to customer view" 并将当前角色切换为客户,这样他就可以看到客户视图。

我正在寻找并找到 this,这是我想要的,但解决方案是使用 cookie。 我试过了,您可以在 chrome 调试控制台中编辑 cookie,这样任何人都可以更改为管理员。

是否可以选择在没有 cookie 的情况下实现此目的?

这是我使用 cookie 来设置的:

HttpContext.Response.Cookies.Append("currentRole", "Admin",
    new CookieOptions { Expires = DateTime.Now.AddYears(10), IsEssential = true, 
    SameSite = SameSiteMode.Lax, Secure = true });

这是为了得到它:

string currentRole = HttpContext.Request.Cookies["currentRole"];

使用 cookie 来存储类似的东西作为偏好似乎没有问题,只要你不使用作为后端的唯一因素 returns。

将 cookie 视为请求,而不是权利:"Please show me the Admin experience," 或 "Please show me the Customer experience"。当您的后端收到该请求时,您可以像现在一样查看通过 cookie 传入的首选项,然后根据他们的授权检查它以查看是否尊重它并继续您正在使用的任何逻辑来提供这种体验。如果客户传入 "admin" cookie 请求但他们不属于 "admin" 角色,您可以拒绝它。