using System;
using Microsoft.AspNetCore.Http;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using TEAMModelOS.Models;
using TEAMModelOS.SDK.Extension;
namespace TEAMModelBI.Tool.Extension
{
public static class HttpJwtAnalysis
{
///
/// 通过jwt封装的字串解析,id和名称
///
///
///
///
public static (string id, string name) JwtXAuth(string auth, Option option)
{
string id = null, name = null;
if (!string.IsNullOrWhiteSpace(auth) && JwtAuthExtension.ValidateApiToken(auth, option.JwtSecretKey))
{
var jwt = new JwtSecurityTokenHandler().ReadJwtToken(auth);
id = jwt.Payload.Sub;
name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
}
return (id, name);
}
///
/// 通过jwt封装的字串解析
///
///
///
///
public static (string id, string name, string pic, string did, string dname, string dpic) JwtXAuthBI(string auth, Option option)
{
object id = null, name = null, pic = null, did = null, dname = null, dpic = null;
if (!string.IsNullOrWhiteSpace(auth) && JwtAuthExtension.ValidateApiToken(auth, option.JwtSecretKey))
{
var jwt = new JwtSecurityTokenHandler().ReadJwtToken(auth);
id = jwt.Payload.Sub;
name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
pic = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("picture"))?.Value;
did = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddsub"))?.Value;
dname = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddname"))?.Value;
dpic = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddpicture"))?.Value;
}
return (id?.ToString(), name?.ToString(), pic?.ToString(), did?.ToString(), dname?.ToString(), dpic?.ToString());
}
}
}