.net core添加JWT授权
在startup中ConfigureServices方法内部增加:
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "swaggerTest", Version = "v1" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer { token }\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme="Bearer", BearerFormat = "JWT", }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference=new OpenApiReference() { Id="Bearer", Type=ReferenceType.SecurityScheme } }, new string[]{} } }); }); services.AddAuthentication(option => { option.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; option.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateAudience = true, ValidAudience = "Audience", ValidateIssuer = true, ValidIssuer = "Issuer", ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SigningKeySigningKeySigningKeySigningKey")), ValidateLifetime = true, // 缓冲过期时间,总的有效时间等于这个时间加上jwt的过期时间,如果不配置,默认是5分钟 //ClockSkew = TimeSpan.FromMinutes(1) }; });
在Configure中添加
app.UseAuthorization();中间件
在控制器前面加入[Authorize]
然后去请求接口返回jwt验证信息,返回给前端
[AllowAnonymous] [HttpPost("Login")] public IActionResult Login(string username,string password) { var identifier = username.ToString(); var role = password.ToString(); var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, "NAME")); identity.AddClaim(new Claim(ClaimTypes.Role, "ROLE")); var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SigningKeySigningKeySigningKeySigningKey")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var tokenDescriptor = new SecurityTokenDescriptor { Audience = "Audience", Issuer = "Issuer", Subject = identity, Expires = DateTime.Now.AddHours(4), SigningCredentials = creds, }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); var tokenRes = tokenHandler.WriteToken(token); return Ok(tokenRes); }
然后到这里就可以去swagger上去测试jwt验证信息了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界