如何使用asp.net核心api在标头中使用x-auth-token授权请求?

时间:2019-07-08 05:17:19

标签: authentication jwt authorization asp.net-core-webapi

我使用asp.net核心网络api生成了包含用户信息和她的角色的令牌,并将其放在客户端,然后将其放在请求标头中的x-auth-token中。我如何在asp.net api控制器和操作中授权用户(及其角色)?我在startup.cs中的设置如下所示,但我无法在操作中捕获请求!

var securityKey = Environment.GetEnvironmentVariable("SECURITY_KEY");
var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(securityKey));

services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
      options.TokenValidationParameters = new TokenValidationParameters()
              {
               ValidateIssuer = true,
               ValidateAudience = true,
               ValidateIssuerSigningKey = true,

               ValidIssuer = "shoniz.com",
               ValidAudience = "readers",
               IssuerSigningKey = symmetricSecurityKey
              };
    });

1 个答案:

答案 0 :(得分:0)

示例中的代码是身份验证设置(JWT方案)。首先,您必须添加中间件,该中间件将对用户进行身份验证。这部分代码应以var m = [[1,2,3],[4,5,6],[7,8,9]]; var matrix = JSON.parse(JSON.stringify(m)); m.shift(); console.log(matrix); m[0].shift(); console.log(m); console.log(matrix);Startup.cs方法)显示。

Configure()

调用此中间件后,将考虑所有身份验证方案。认证成功后,将设置app.UseAuthentication(); (包括您所有的问题声明)。

第二部分是授权。最简单的方法是使用HttpContext.User属性,该属性可以与操作方法和控制器一起用作批注。您可以添加自定义角色名称或策略限制。

[Authorize]