如何处理多角色的问题?
前一篇完成了基于角色的权限控制,但是如果一个用户有多个角色,就会有问题。
原因是因为IdentityServer的多个角色是放在同一个Claim里面,她以JSON数组的形式存在,但是前面提到的Blazor认证组件是识别不了的。
因此我们需要做一个转换,Blazor提供了方式让我们灵活的实现自己的扩展。
首先建一个自己的工厂类:
using System.Linq;
using System.Security.Claims;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
using Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal;
public class CustomUserFactory
: AccountClaimsPrincipalFactory<RemoteUserAccount>
{
public CustomUserFactory(IAccessTokenProviderAccessor accessor)
: base(accessor)
{
}
public async override ValueTask<ClaimsPrincipal> CreateUserAsync(
RemoteUserAccount account,