Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何从JWT令牌获取数据并在客户端上不断请求它。网芯_Security_Authentication_Asp.net Core_Jwt_Asp.net Core Webapi - Fatal编程技术网

Security 如何从JWT令牌获取数据并在客户端上不断请求它。网芯

Security 如何从JWT令牌获取数据并在客户端上不断请求它。网芯,security,authentication,asp.net-core,jwt,asp.net-core-webapi,Security,Authentication,Asp.net Core,Jwt,Asp.net Core Webapi,您好,我已经在.NETCore2.2中设置了一个Web Api,用于使用JWT进行身份验证 我使用邮递员进行测试,我可以发送 以及回应 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiIxIiwicm9sZSI6IkFkbWluaXN0cmF0b3IiLCJuYmYiOjE1NTM0NjUxMTgsImV4cCI6MTU1MzQ2NTcxOCwiaWF0IjoxNTUzNDY1MTE4fQ.YF0ztM_p9N2UMUJKYTjJHpkvtJ

您好,我已经在.NETCore2.2中设置了一个Web Api,用于使用JWT进行身份验证

我使用邮递员进行测试,我可以发送

以及回应

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiIxIiwicm9sZSI6IkFkbWluaXN0cmF0b3IiLCJuYmYiOjE1NTM0NjUxMTgsImV4cCI6MTU1MzQ2NTcxOCwiaWF0IjoxNTUzNDY1MTE4fQ.YF0ztM_p9N2UMUJKYTjJHpkvtJwVymhtOy5H5g2qOSs
我的问题是,如何让用户通过身份验证并在客户端检索数据

我在.NET4.5中有一个小应用程序

用户登录并将用户名和密码发送到web api并返回令牌。
我应该如何以及何时将令牌发送回APi以验证它?

当我使用JWT为APi创建令牌并希望在Postman中使用它进行测试时,标头需要将单词Bearer放在令牌前面。例如,您希望检索数据客户端,使其成为一个Post方法,其标题键为:Authorization Value:Bearer您的令牌剪切并粘贴您的令牌,并在Bearer后面留有空格

此流程可能会对您有所帮助。这只是一个伪代码

用户从客户端登录。在本地存储中保存令牌后,重定向到主页

http.post("mysite.me/api/token", userCredentialsDto).subscribe(token => {
    localstorage.save(token);
    redirectTo["/home"];
});
请求转到TokenController.cs:

[HttpPost]
public string Post(UserCredentialsDto userCreds)
{
    _validationService.validate(userCreds);
    return _jwtService.CreateToken(userCreds);
}
当您转到主页或任何您想要的页面时,您可以从本地存储获取访问令牌。在将令牌发送到服务器之前,请将该令牌附加到每个请求头

这里需要注意的是,访问令牌是对用户进行身份验证的,因此,当您的访问令牌过期时,您的用户将被身份验证。访问令牌过期后,您可以使用刷新令牌刷新您的令牌并继续使用您的应用程序


JWT是base64编码的。您可以在客户端轻松解码它。此外,在成功进行身份验证后,.Net core会自动将JWT声明绑定到HttpContext.User对象。

您的客户端是什么?是角度还是MVC?对于web api,它是无状态的,为了访问安全资源,您需要在请求中附加带有承载的令牌。为了验证令牌,这由app.UseAuthentication;实现;。检查一下这个文件
[HttpPost]
public string Post(UserCredentialsDto userCreds)
{
    _validationService.validate(userCreds);
    return _jwtService.CreateToken(userCreds);
}