token是作为头文件传回的。
前端:
获取token
const token = localStorage.getItem('token');
axios.get('http://example.com/api/data', { headers: { 'Authorization': `Bearer ${token}` } }) .then(response => { // 处理响应数据 })
.catch(error => { // 处理请求错误 });
删除token
// 如果你的token保存在LocalStorage中 // 删除token可以通过如下代码实现 localStorage.removeItem('token');
提取token的信息
import jwt_decode from 'jwt-decode';
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
const decoded = jwt_decode(token); const userId = decoded.id; // 假设token中携带了id属性
后端:
我写的格式是token:(token的值)
但正常格式是Authorization:Bearer 1234567890abcdefg
1.postman怎么发送token
-
在请求的 Headers 标签页中,点击 "Add" 按钮,添加一个新的 Key/Value 对。其中,Key 为 "Authorization"。
-
Value 的填写格式是 "Bearer <Token>"。这里的 "Bearer " 前面有一个空格,然后用尖括号括起来的 <Token> 表示你获取到的 Token 值。
2.sprintboot如何获取token
@RestController
public class MyController {
@GetMapping("/example")
public ResponseEntity<String> parseJwtToken(@RequestHeader("Authorization") String authorizationHeader) {
// 获取 JWT Token
String token = authorizationHeader.substring(7); // 去除 "Bearer " 前缀,从第七个开始截取,如果是没有Bearer就不用截取。
// 解码 Token 中的数据(一般我们是建立一个JwtUtils工具类,然后Claims claims=JwtUtils.parseJwt(token);)
Claims claims = Jwts.parser()
.setSigningKey("mySecretKey") // 设置密钥
.parseClaimsJws(token)
.getBody();
// 从 Token 中提取需要的信息
String username = claims.getSubject();
List<String> roles = (List<String>) claims.get("roles");
或者(String username = claims.get("username").toString();
String role = claims.get("role").toString();)
// 处理信息
return ResponseEntity.ok("Username: " + username + ", Roles: " + roles);
}
}