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