| using Microsoft.AspNetCore.Http; | 
| using Microsoft.AspNetCore.Http.Extensions; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.IdentityModel.Tokens.Jwt; | 
| using System.Linq; | 
| using System.Security.Claims; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
| using WIDESEA_Core.Helper; | 
|   | 
| namespace WIDESEA_Core.Extensions | 
| { | 
|     public static class SwaggerContextExtension | 
|     { | 
|         public const string SwaggerCodeKey = "swagger-code"; | 
|         public const string SwaggerJwt = "swagger-jwt"; | 
|   | 
|         public static bool IsSuccessSwagger() | 
|         { | 
|             return App.HttpContext?.GetSession()?.GetString(SwaggerCodeKey) == "success"; | 
|         } | 
|   | 
|         public static bool IsSuccessSwagger(this HttpContext context) | 
|         { | 
|             return context.GetSession()?.GetString(SwaggerCodeKey) == "success"; | 
|         } | 
|   | 
|         public static void SuccessSwagger() | 
|         { | 
|             App.HttpContext?.GetSession()?.SetString(SwaggerCodeKey, "success"); | 
|         } | 
|   | 
|         public static void SuccessSwagger(this HttpContext context) | 
|         { | 
|             context.GetSession()?.SetString(SwaggerCodeKey, "success"); | 
|         } | 
|   | 
|         public static void SuccessSwaggerJwt(this HttpContext context, string token) | 
|         { | 
|             var claims = new ClaimsIdentity(GetClaimsIdentity(token)); | 
|             context.User.AddIdentity(claims); | 
|             context.GetSession().SetString(SwaggerJwt, token); | 
|         } | 
|   | 
|         private static IEnumerable<Claim> GetClaimsIdentity(string token) | 
|         { | 
|             var jwtHandler = new JwtSecurityTokenHandler(); | 
|             // token校验 | 
|             if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token)) | 
|             { | 
|                 var jwtToken = jwtHandler.ReadJwtToken(token); | 
|   | 
|                 return jwtToken.Claims; | 
|             } | 
|   | 
|             return new List<Claim>(); | 
|         } | 
|   | 
|         public static string GetSuccessSwaggerJwt(this HttpContext context) | 
|         { | 
|             return context.GetSession().GetString(SwaggerJwt); | 
|         } | 
|   | 
|   | 
|         public static void RedirectSwaggerLogin(this HttpContext context) | 
|         { | 
|             var returnUrl = context.Request.GetDisplayUrl(); //获取当前url地址  | 
|             context.Response.Redirect("/swg-login.html?returnUrl=" + returnUrl); | 
|         } | 
|     } | 
| } |