(四)jwt调用webapi接口时的验证

1:生成jwt,此处不能加[Authorize]验证,往往作为登陆接口调用

[Route("/api/Tvl")]
[ApiController]
public class TvlController : ControllerBase
{
/// <summary>
/// 生成token
/// </summary>
[Route("WriteToken")]
[HttpPost]
public void WriteToken()
{
string token = JwtHelper.IssueJwt();
}
}

postman对应的请求路径:  http://localhost:4038/api/Tvl/WriteToken

2:验证jwt,加上[Authorize]表示要启用jwt,加上[AllowAnonymous]特性,表示绕过权限验证,不会验证jwt,加了[Authorize]特性不加[AllowAnonymous]就要验证jwt

[Authorize]
[Route("/api/Test")]
[ApiController]
public class TestController : ControllerBase
{
[Route("GetVl")]
[HttpPost]
public string GetVl()
{
return "111";
}
[AllowAnonymous]
[Route("GetVl1")]
[HttpPost]
public string GetVl1()
{
return "222";
}
}

postman请求:

找到headers ,key值输入:Authorization   value值输入:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxIiwiaWF0IjoiMTY0NTQxMjgwMSIsIm5iZiI6IjE2NDU0MTI4MDEiLCJleHAiOiIxNjQ1NDIwMDAxIiwiaXNzIjoicG1zLmNvcmUub3duZXIiLCJhdWQiOiJwbXMuY29yZSJ9.gw2P5GiqEv5umY5yaEKkba9M_8-zjeZ5nS63TiIq4R0

请求路径:

http://localhost:4038/api/Test/GetVl

http://localhost:4038/api/Test/GetVl1

注意点:headers的Authorization的value值里面的token前面必须跟Bearer加空格,不然是无效的

GetVl1加了[AllowAnonymous],所以不会验证jwt

 

3:登陆的整个逻辑

登陆后将token返回给客户端,客户之后每次访问接口,在过滤器都会判断档期时间是否快要到过期时间,如果快要到过期时间了,给前端一个标记,前端根据这个表记去刷新token,获取信的token

4:退出登陆的逻辑

实质是将改用户的信息从redes或者Cache缓存里面删除掉,相当于该用户的token信息子在缓存里面就不存在了

posted @ 2022-02-21 11:41  yingxianqi  阅读(342)  评论(0)    收藏  举报