|
@@ -29,7 +29,8 @@ namespace TEAMModelOS.Filter
|
|
|
}
|
|
|
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
|
|
|
{
|
|
|
- string id = string.Empty, name = string.Empty, picture = string.Empty, school = string.Empty, scope = string.Empty;
|
|
|
+ string id = string.Empty, name = string.Empty, picture = string.Empty, school = string.Empty, scope = string.Empty, roles = string.Empty;
|
|
|
+
|
|
|
//============== 这里是执行方法之前获取数据 ====================
|
|
|
|
|
|
// 获取控制器、路由信息
|
|
@@ -40,6 +41,7 @@ namespace TEAMModelOS.Filter
|
|
|
|
|
|
// 获取 HttpContext 和 HttpRequest 对象
|
|
|
var httpContext = context.HttpContext;
|
|
|
+ string ua = httpContext.GetUserAgent();
|
|
|
var httpRequest = httpContext.Request;
|
|
|
|
|
|
// 获取客户端 Ipv4 地址
|
|
@@ -61,7 +63,19 @@ namespace TEAMModelOS.Filter
|
|
|
string tokenSha = string.Empty, client = string.Empty;
|
|
|
if (context.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues Authorization))
|
|
|
{
|
|
|
-
|
|
|
+ var jwt = new JwtSecurityTokenHandler().ReadJwtToken(Authorization.ToString().Replace("Bearer ", ""));
|
|
|
+ client= roles = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("roles"))?.Value;
|
|
|
+ tokenSha= ShaHashHelper.GetSHA1(Authorization.ToString());
|
|
|
+ }
|
|
|
+ if (context.HttpContext.Request.Headers.TryGetValue("X-Auth-IdToken", out StringValues XAuthIdToken))
|
|
|
+ {
|
|
|
+ var jwt = new JwtSecurityTokenHandler().ReadJwtToken(XAuthIdToken);
|
|
|
+ id = jwt.Payload.Sub;
|
|
|
+ name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
|
|
|
+ if (string.IsNullOrEmpty(tokenSha))
|
|
|
+ {
|
|
|
+ tokenSha= ShaHashHelper.GetSHA1(XAuthIdToken.ToString());
|
|
|
+ }
|
|
|
}
|
|
|
if (context.HttpContext.Request.Headers.TryGetValue("X-Auth-School", out StringValues XAuthSchool))
|
|
|
{
|
|
@@ -79,14 +93,23 @@ namespace TEAMModelOS.Filter
|
|
|
school = jwt.Payload.Azp;
|
|
|
name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
|
|
|
scope = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("scope"))?.Value;
|
|
|
+ if (string.IsNullOrEmpty(tokenSha))
|
|
|
+ {
|
|
|
+ tokenSha= ShaHashHelper.GetSHA1(authtoken);
|
|
|
+ }
|
|
|
}
|
|
|
string secChUaPlatform = string.Empty;
|
|
|
if (httpContext.Request.Headers.TryGetValue("Sec-Ch-Ua-Platform", out var values))
|
|
|
{
|
|
|
secChUaPlatform = values.FirstOrDefault();
|
|
|
}
|
|
|
- // 请求时间
|
|
|
- var requestedTime = DateTimeOffset.Now.GetGMTTime(8).ToUnixTimeMilliseconds();
|
|
|
+ if (string.IsNullOrEmpty(tokenSha))
|
|
|
+
|
|
|
+ {
|
|
|
+ tokenSha= ShaHashHelper.GetSHA1($"{ua}{remoteIPv4}{httpRequest.Host}{secChUaPlatform}");
|
|
|
+ }
|
|
|
+ // 请求时间
|
|
|
+ var requestedTime = DateTimeOffset.Now.GetGMTTime(8).ToUnixTimeMilliseconds();
|
|
|
//============== 这里是执行方法之后获取数据 ====================
|
|
|
var actionContext = await next();
|
|
|
// 获取返回的结果
|
|
@@ -103,7 +126,7 @@ namespace TEAMModelOS.Filter
|
|
|
|
|
|
var data = new
|
|
|
{
|
|
|
- ua = httpContext.GetUserAgent(),
|
|
|
+ ua =ua,
|
|
|
ip = remoteIPv4,
|
|
|
time = requestedTime,
|
|
|
path = $"{httpRequest.PathBase}{httpRequest.Path}",
|
|
@@ -118,6 +141,7 @@ namespace TEAMModelOS.Filter
|
|
|
referer = refererUrl,
|
|
|
platform = secChUaPlatform,
|
|
|
p = "os",
|
|
|
+ idToken=XAuthIdToken
|
|
|
};
|
|
|
_= _httpTrigger.RequestHttpTrigger(data, "China", "http-log");
|
|
|
|