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);
|
}
|
}
|
}
|