ASP.NET Core 3.1 Web API基于角色的授权不起作用

罗纳德·阿贝拉诺

我无法理解为什么我总是在我登录的用户具有SuperAdmin角色的情况下获得401未经授权我尝试查看其他解决方案和项目,它们似乎与我仍然无法使用的代码相同。我使用Postman来测试API,并在“授权”选项卡中的承载令牌中粘贴了我登录的用户的令牌,并对此API进行了请求。

    //API
    [Route("create")]
    [Authorize(Roles = "SuperAdmin")]
    public async Task<IActionResult> RegisterUserAsync([FromBody] Request request)
    {
       return something;
    }

    //StartUp.cs
    private void ConfigureAuth(IServiceCollection services)
    {
        services.AddIdentity<UserEntity, RoleEntity>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders()
            .AddRoles<RoleEntity>();
    }
    var key = Encoding.ASCII.GetBytes(jwtSettings.Secret);
        services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(x =>
        {
            x.RequireHttpsMetadata = false;
            x.SaveToken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

    //JWT
    public string GenerateToken(UserEntity userEntity, IList<string> roles)
    {
        var token = string.Empty;
        var tokenHandler = new JwtSecurityTokenHandler();
        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this.jwtOptions.GetJwtOptions().Secret));
        var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature);

        var claims = new List<Claim>()
        {
            new Claim(ClaimTypes.Name, userEntity.UserName),
            new Claim(ClaimTypes.GivenName, userEntity.FirstName),
            new Claim(ClaimTypes.Surname, userEntity.LastName),
            new Claim(ClaimTypes.NameIdentifier, userEntity.Id.ToString()),
            new Claim(ClaimTypes.Role, roles.FirstOrDefault()) //SuperAdmin
        };

        var tokenDescriptor = new SecurityTokenDescriptor
        {
            Subject = new ClaimsIdentity(claims),
            Expires = DateTime.UtcNow.AddMinutes(this.jwtOptions.GetJwtOptions().ExpiresInMinutes),
            SigningCredentials = credentials
        };

        token = tokenHandler.WriteToken(tokenHandler.CreateToken(tokenDescriptor));

        return token;
    }
Nan Yu

您需要添加app.UseAuthentication()之前app.UseAuthorization(),身份验证中间件将处理JWT承载身份验证,验证和解码令牌,最后写入用户的原则。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET Core 2.1:Razor Pages - 基于角色的授权不起作用

来自分类Dev

JWT承载令牌授权不起作用ASP Net Core Web API

来自分类Dev

ASP.NET Core 3 Web Api发布请求不起作用

来自分类Dev

ASP.NET Core Web API和角色授权

来自分类Dev

自定义授权筛选器在ASP.NET Core 3中不起作用

来自分类Dev

授权角色/策略属性在.Net Core 3中不起作用

来自分类Dev

具有基于角色的授权的ASP.NET Web Api

来自分类Dev

ASP.Net Core Web API自定义路由不起作用

来自分类Dev

ASP.Net Core Web API自定义路由不起作用

来自分类Dev

ASP.NET MVC 3匿名授权不起作用

来自分类Dev

ASP.NET Web API中基于角色的授权-如何在主体上设置角色?

来自分类Dev

调试asp.net core web API

来自分类Dev

ASP .NET Core 3的Web安全审核问题

来自分类Dev

ASP.NET Core Web API 错误:模型 1[TContext] 违反了“TContext”类型的约束

来自分类Dev

UseCookieAuthentication中的ASP.NET Core Web应用程序ExpireTimeSpan不起作用

来自分类Dev

如何正确处理 ASP.Net Core 3 Web API 中的多个端点

来自分类Dev

asp.net Web Api路由不起作用

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

ASP .Net Core Web 应用程序调用 Web API

来自分类Dev

自定义AuthenticationHandler在Asp.Net Core 3中不起作用

来自分类Dev

带有JSON参数的HttpPost在ASP.NET Core 3中不起作用

来自分类Dev

在ASP .Net Core 2.2中添加JWT令牌后,授权不起作用

来自分类Dev

ASP.NET Core中的NTLM授权WCF不起作用

来自分类Dev

授权在 ASP.NET Core 2.1 的 Signalr 中不起作用

来自分类Dev

使用Web API的ASP.Net Core路由

来自分类Dev

ASP.NET Core 1.0 Web API不返回XML

来自分类Dev

在Asp.net Core中将字典发布到Web API

来自分类常见问题

使用VSTS的ASP.NET Core Web API的CI / CD

Related 相关文章

  1. 1

    ASP.NET Core 2.1:Razor Pages - 基于角色的授权不起作用

  2. 2

    JWT承载令牌授权不起作用ASP Net Core Web API

  3. 3

    ASP.NET Core 3 Web Api发布请求不起作用

  4. 4

    ASP.NET Core Web API和角色授权

  5. 5

    自定义授权筛选器在ASP.NET Core 3中不起作用

  6. 6

    授权角色/策略属性在.Net Core 3中不起作用

  7. 7

    具有基于角色的授权的ASP.NET Web Api

  8. 8

    ASP.Net Core Web API自定义路由不起作用

  9. 9

    ASP.Net Core Web API自定义路由不起作用

  10. 10

    ASP.NET MVC 3匿名授权不起作用

  11. 11

    ASP.NET Web API中基于角色的授权-如何在主体上设置角色?

  12. 12

    调试asp.net core web API

  13. 13

    ASP .NET Core 3的Web安全审核问题

  14. 14

    ASP.NET Core Web API 错误:模型 1[TContext] 违反了“TContext”类型的约束

  15. 15

    UseCookieAuthentication中的ASP.NET Core Web应用程序ExpireTimeSpan不起作用

  16. 16

    如何正确处理 ASP.Net Core 3 Web API 中的多个端点

  17. 17

    asp.net Web Api路由不起作用

  18. 18

    如何从Web API调用ASP.NET Core Web MVC

  19. 19

    如何从Web API调用ASP.NET Core Web MVC

  20. 20

    ASP .Net Core Web 应用程序调用 Web API

  21. 21

    自定义AuthenticationHandler在Asp.Net Core 3中不起作用

  22. 22

    带有JSON参数的HttpPost在ASP.NET Core 3中不起作用

  23. 23

    在ASP .Net Core 2.2中添加JWT令牌后,授权不起作用

  24. 24

    ASP.NET Core中的NTLM授权WCF不起作用

  25. 25

    授权在 ASP.NET Core 2.1 的 Signalr 中不起作用

  26. 26

    使用Web API的ASP.Net Core路由

  27. 27

    ASP.NET Core 1.0 Web API不返回XML

  28. 28

    在Asp.net Core中将字典发布到Web API

  29. 29

    使用VSTS的ASP.NET Core Web API的CI / CD

热门标签

归档