C# 如何从控制器方法访问令牌数据?
如何访问从客户端传递到控制器方法的jwt令牌数据?我需要令牌中的userId,以便通过数据存储库层中的其他方法调用访问更多关于用户的数据 我已经能够使用硬编码的令牌字符串来实现这一点,但不能使用从客户端传递的令牌。我将如何编写此控制器方法以将jwt令牌作为输入。。。或者从该控制器方法中访问令牌字符串,从而检索我要查找的数据 我实际上如何将令牌传递到我的控制器方法中 这没有起作用: 或者这个: 所以C# 如何从控制器方法访问令牌数据?,c#,asp.net-core,asp.net-core-webapi,identity,jwt-auth,C#,Asp.net Core,Asp.net Core Webapi,Identity,Jwt Auth,如何访问从客户端传递到控制器方法的jwt令牌数据?我需要令牌中的userId,以便通过数据存储库层中的其他方法调用访问更多关于用户的数据 我已经能够使用硬编码的令牌字符串来实现这一点,但不能使用从客户端传递的令牌。我将如何编写此控制器方法以将jwt令牌作为输入。。。或者从该控制器方法中访问令牌字符串,从而检索我要查找的数据 我实际上如何将令牌传递到我的控制器方法中 这没有起作用: 或者这个: 所以 Authorize(AuthenticationSchemes = JwtBearerDefa
Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[HttpPost("moretokenz")]
public JwtSecurityToken MoreToken(string strToken)
{
//Where would strToken come from?
return new JwtSecurityTokenHandler().ReadJwtToken(strToken);
}
您只需要在JWT令牌的有效负载中获取声明。 拜访 试试这个:
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public async Task<ActionResult<string>> Get()
{
var token = await HttpContext.GetTokenAsync("access_token");
return token;
}
[HttpGet]
[授权(AuthenticationSchemes=JwtBearerDefaults.AuthenticationScheme)]
public async Task当我有字符串访问令牌时,我可以访问数据本身,但我不知道如何首先获取“yourStringAccessToken”。。。我是否希望客户端将字符串值访问令牌传递给我@QBACID313是的,您应该在HTTP请求的头中从客户端发送访问令牌。因此,假设您正在API端点中接收来自客户端的请求,您应该能够访问服务器端的Http上下文对象(HttpContext);在此对象内,您可以访问属性(Request.Headers.HeaderAuthorization)。如果您在客户机上使用的是无记名授权,那么在这个对象中,您有类似于“无记名”的东西。您可以从中获取访问令牌。您在代码中有这样的示例吗?这就是我一直在寻找的东西,但实际上找不到。每个示例基本上都是从已经存在的字符串访问令牌开始的。(在一个例子中,它是从哪里来的?您是如何得到它的。)我只需要用于实际检索令牌的代码。您的StringAccessToken是在哪里初始化的,它是在哪里分配给@QbaCid313的?如果您有特定的代码/问题要分享,我会尽力帮助您。通常,您从身份验证服务器获取访问令牌,并且可以在Http请求中包含该令牌。as:httpClient.DefaultRequestHeaders.Authorization=new AuthenticationHeaderValue(“承载者”,令牌)代码>你用什么程序制作这些动画?演示事物如何工作的好方法。
var securityTokenHandler = new JwtSecurityTokenHandler();
if (securityTokenHandler.CanReadToken(yourStringAccessToken))
{
var decriptedToken = securityTokenHandler.ReadJwtToken(yourStringAccessToken);
var claims = decriptedToken.Claims;
//At this point you can get the claims in the token, in the example I am getting the expiration date claims
//this step depends of the claims included at the moment of the token is generated
//and what you are trying to accomplish
var expiredClaimValue = claims.Where(c => c.Type == "exp").FirstOrDefault().Value;
}
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public async Task<ActionResult<string>> Get()
{
var token = await HttpContext.GetTokenAsync("access_token");
return token;
}