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 WIDESEAWCS_Core.Helper; namespace WIDESEAWCS_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 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(); } 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); } } }