【发布时间】:2021-08-14 07:14:18
【问题描述】:
string Accesstoken = "Token";
string key = "my_secret_key_12345"; //Secret key which will be used later during validation
var issuer = "SiteURL"; //normally this will be your site URL
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var jwt_token = new JwtSecurityTokenHandler().ReadJwtToken(token);
string claims = string.Join(";", jwt_token.Claims);
上面的代码正在从令牌中读取我的声明数据。我需要将此声明分配给以下参数,而不是 Guid.Parse(authParams[0]) 需要将其从声明中分配。TenantId 类似这样。
TenantId = Guid.Parse(authParams[0]),
Env = authParams[1],
UserId = Guid.Parse(authParams[2]),
SessionId = Guid.Parse(authParams[3]),
EmployeeID = int.Parse(authParams[4]),
Language = language,
TimezoneOffset = timezoneOffset
【问题讨论】:
-
您能否在问题中包含有关您所面临问题的更多详细信息?毕竟,不就是迭代
jwt_token.Claims,直到找到类型为“TenantId”的那个,然后保存该值吗? -
我无法将数据分配给我上面的参数。我可以从令牌中读取声明,在分配它时需要帮助。我的读取令牌返回此 {“jti”:“1109777c-2d71-4bea-91f3-bc3040d084a9”,“TenantId”:“8B6AAF27-CAB0-4D45-A22A-293A40C7983A”,“Env”:“IDB”,“UserId”: “77777777-7777-7777-7777-777777777777”,“SessionId”:“530c9d45-f371-4950-9fad-de0c6f409abf”,“EmployeeID”:“0”,“exp”:1622085870,“iss”:“URL”, "aud": "URL" }
-
authParams来自哪里?为什么不能从jwt_token.Claims中的适当声明中分配值?请展示您这样做的尝试(作为对您的问题的编辑,而不是作为评论)。在我看来,它只是string tenantIdText = jwt-token.Claims.FirstOrDefault("TenantId")?.Value;。您能否更具体地说明为什么这还不够? -
好的!我尝试过这种方式 TenantId = jwt_token.Claims.FirstOrDefault("TenantId")?.Value,但由于无法从字符串转换为 System.Func
出现错误 -
cmets 中有很多我应该在原始帖子中的数据。你能修改帖子吗...尤其是变量
authparams
标签: c# asp.net asp.net-mvc asp.net-web-api