Asp.Net核心身份User.IsInRole始终为true

时间:2019-05-17 12:19:03

标签: c# .net-core asp.net-identity asp.net-roles

我们正在Web应用程序中使用“角色”。在此应用程序中,我们拥有可以动态删除/向用户添加角色的管理员。除了一个例外,这很好用。我们具有根据用户角色呈现的UI元素:

@if (User.IsInRole(Roles.Admin))
{
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="ApplicationAdministration" asp-controller="Administration" asp-action="Index">Administration</a>
    </li>
}

如果管理员像这样从用户中删除角色:

var dbAccount = await _userManager.FindByIdAsync(id);
var roles = await _userManager.GetRolesAsync(dbAccount);
await _userManager.RemoveFromRolesAsync(dbAccount, roles);

如果该用户仍处于登录状态,则更改不会应用到该用户的会话中。换句话说,受影响的用户将需要先手动注销,否则他们仍然可以看到呈现的操作链接。

如何防止这种情况?还是这样的东西可以接受?

0 个答案:

没有答案