jwt (token授权方式)

jwt

1.安装包

Microsoft.AspNetCore.Authentication.JwtBearer

2.startup

//JWT
            services.Configure(Configuration.GetSection("tokenConfig"));

            var token = Configuration.GetSection("tokenConfig").Get();

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                //Token Validation Parameters
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    //获取或设置要使用的Microsoft.IdentityModel.Tokens.SecurityKey用于签名验证。
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.
                    GetBytes(token.Secret)),
                    //获取或设置一个System.String,它表示将使用的有效发行者检查代币的发行者。
                    ValidIssuer = token.Issuer,
                    //获取或设置一个字符串,该字符串表示将用于检查的有效受众反对令牌的观众。
                    ValidAudience = token.Audience,
                    ValidateIssuer = false,
                    ValidateAudience = false,
                };
            });
            ///分割线
            //jwt授权
            app.UseAuthentication();//这个
            
            app.UseRouting();
            //启用跨域
            app.UseCors("cors");
            //引入wwwroot
            app.UseStaticFiles();
            //jwt
            app.UseAuthorization();//这个

app.UseAuthentication() app.UseAuthorization(); 位置固定

3.appsettings

 "tokenConfig": {
    "secret": "123456789123456789",
    "issuer": "test.cn",
    "audience": "test",
    "accessExpiration": 30,
    "refreshExpiration": 60
  },

控制器调用

[Authorize]

登录调用

[AllowAnonymous]

你可能感兴趣的:(.net,core)