1
hutongqing
2025-01-08 413f243b73ef073f4ac83889fda2f5bf6d1e727c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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);
        }
    }
}