| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- using System.IdentityModel.Tokens.Jwt;
 
- using System.Security.Claims;
 
- namespace OASystem.API.OAMethodLib.Auth
 
- {
 
-     /// <summary>
 
-     /// jwt
 
-     /// </summary>
 
-     public static class JWTBearer
 
-     {
 
-         public static readonly SymmetricSecurityKey SecurityKey = new SymmetricSecurityKey(Guid.NewGuid().ToByteArray());
 
-         public static readonly JwtSecurityTokenHandler JwtTokenHandler = new JwtSecurityTokenHandler();
 
-         public static string GenerateToken(HttpContext httpContext)
 
-         {
 
-             // 请求时传入的用户参数为NameIdentifier claim的值
 
-             var claims = new[] { 
 
-                 new Claim(ClaimTypes.NameIdentifier, httpContext.Request.Query["user"]) 
 
-             
 
-             };
 
-             // 签名凭据
 
-             var credentials = new SigningCredentials(SecurityKey, SecurityAlgorithms.HmacSha256);
 
-             // 生成JWT Token
 
-             var token = new JwtSecurityToken("FMGJ-OA", "OA-Users", claims, expires: DateTime.UtcNow.AddSeconds(60), signingCredentials: credentials);
 
-             return JwtTokenHandler.WriteToken(token);
 
-         }
 
-         public static void AddMyJWTBearerAuth(this IServiceCollection services)
 
-         {
 
-             // 添加自定义授权
 
-             services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
 
-                 .AddJwtBearer(options =>
 
-                 {
 
-                     options.TokenValidationParameters =
 
-                     new TokenValidationParameters
 
-                     {
 
-                         LifetimeValidator = (before, expires, token, parameters) => expires > DateTime.UtcNow,
 
-                         ValidateAudience = false,
 
-                         ValidateIssuer = false,
 
-                         ValidateActor = false,
 
-                         ValidateLifetime = true,
 
-                         IssuerSigningKey = JWTBearer.SecurityKey
 
-                     };
 
-                     options.Events = new JwtBearerEvents
 
-                     {
 
-                         OnMessageReceived = context =>
 
-                         {
 
-                             // 当我们收到消息时,去获取请求中的access_token字段
 
-                             var accessToken = context.Request.Query["access_token"];
 
-                             // 如果没有就去头上找,找到了就放入我们context.token中
 
-                             if (!string.IsNullOrEmpty(accessToken))
 
-                             {
 
-                                 context.Token = accessToken;
 
-                             }
 
-                             return Task.CompletedTask;
 
-                         }
 
-                     };
 
-                 });
 
-         }
 
-     }
 
- }
 
 
  |