加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在更改角色后刷新claimPrincipal

发布时间:2020-12-15 17:46:48 所属栏目:百科 来源:网络整理
导读:我在改变dotnetcore身份角色时遇到一些问题. 我有以下代码 private async Task SetRoleToX(ClaimsPrincipal claimsPrincipal,string X){ var currentUser = await UserManager.GetUserAsync(claimsPrincipal); var roles = await UserManager.GetRolesAsync(
我在改变dotnetcore身份角色时遇到一些问题.

我有以下代码

private async Task SetRoleToX(ClaimsPrincipal claimsPrincipal,string X)
{
    var currentUser = await UserManager.GetUserAsync(claimsPrincipal);
    var roles = await UserManager.GetRolesAsync(currentUser);

    await UserManager.RemoveFromRolesAsync(currentUser,roles);
    await UserManager.AddToRoleAsync(currentUser,X);
    await SignInManager.RefreshSignInAsync(currentUser);
}

我无法获得ClaimPrincipal更新.

我试过使用登录并登出.

如果手动登录,角色切换工作正常.

我一直在搜索网页,很多人说这应该工作:(

解决方法

相当烦人的是,我所要做的只是将请求发回给该请求.

我不能相信我没有想到它希望这有助于某人.

根据请求更新一些代码

// In controller

public async Task SwapRole([FromBody]RoleSwapRequestDto dto)
{
    await _service.SwapRole(
        User,dto.RoleName
    );

    return await AddCookieToResponse();
}

private async Task AddCookieToResponse()
{
    // Make your token however your app does this (generic dotnet core stuff.)
    var response = await _tokenService.RegenToken(User);

    if (response.Data != null && response.Data.Authenticated && response.Data.TokenExpires.HasValue)
    {
        Response.Cookies.Append(AuthToken,response.Data.Token,new CookieOptions
        {
            HttpOnly = false,Expires = response.Data.TokenExpires.Value
        });
    }

    return response;
}

/// inside _service
public async Task SwapRole(ClaimsPrincipal claimsPrincipal,X);
    await SignInManager.RefreshSignInAsync(currentUser);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读