小编Jim*_*opp的帖子

Windows身份验证Asp.net核心2数据库角色授权

我正在使用Asp.Net Core 2.1和Windows身份验证的Intranet应用程序上工作。我可以很好地从IIS获得通过,但我想使用存储在数据库中的角色进行授权。

我有一个IClaimsTransformeration类,该类基于LAN Id从数据库中获取角色,并将它们添加到带有角色密钥的声明列表中。

public class MyClaimsTransformer : IClaimsTransformation
{
    private readonly IUnitOfWorkMtuSecurity _unitOfWork;

    public MyClaimsTransformer(IUnitOfWorkMtuSecurity unitOfWork)
    {
        _unitOfWork = unitOfWork;
    }

    // Each time HttpContext.AuthenticateAsync() or HttpContext.SignInAsync(...) is called the claims transformer is invoked. So this might be invoked multiple times. 
    public async Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
    {
        var identity = principal.Identities.FirstOrDefault(x => x.IsAuthenticated);
        if (identity == null) return principal;

        //var user = await _userManager.GetUserAsync(principal);
        var user = identity.Name;
        if (user == null) return principal;

        //Get user with roles …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc authorization authorize-attribute asp.net-core-2.1

4
推荐指数
1
解决办法
1974
查看次数