JWT token的作用
时间: 2023-07-15 20:11:40 浏览: 216
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准,它是基于JSON格式的轻量级安全令牌。JWT由三部分组成:头部、载荷和签名。它们以点号分隔,例如:xxxxx.yyyyy.zzzzz。
JWT的作用主要有以下几个方面:
1. 身份验证:JWT可以通过对载荷进行签名来验证用户的身份,从而避免了每次请求都要向服务器发送认证信息的过程。
2. 授权:JWT可以在载荷中附加用户的角色、权限等信息,从而授权用户访问特定资源。
3. 信息交换:JWT可以在载荷中携带一些非敏感的信息,例如用户ID等,从而减少服务器的数据库查询次数,提高服务器性能。
4. 跨域传输:JWT可以跨域传输,因为它是基于标准的JSON格式,可以被多种编程语言识别和解析。
相关问题
/** * 判断token是否存在与有效 * @param jwtToken * @return */ public static boolean checkToken(String jwtToken) { if(ObjectUtils.isEmpty(jwtToken)) return false; try { Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * 判断token是否存在与有效 * @param request * @return */ public static boolean checkToken(HttpServletRequest request) { try { String jwtToken = request.getHeader("token"); if(ObjectUtils.isEmpty(jwtToken)) return false; Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * 根据token获取会员id * @param request * @return */ public static String getMemberIdByJwtToken(HttpServletRequest request) { String jwtToken = request.getHeader("token"); if(ObjectUtils.isEmpty(jwtToken)) return ""; Jws<Claims> claimsJws = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken); Claims claims = claimsJws.getBody(); return (String)claims.get("account"); }
这段代码实现了对 Token 的检查和解析,以及获取其中的信息。
其中,checkToken(String jwtToken) 方法用于检查传入的 jwtToken 是否有效,如果有效则返回 true,否则返回 false。该方法首先判断 jwtToken 是否为空,如果为空则直接返回 false。然后使用 Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken) 对 jwtToken 进行解析和验证,如果解析和验证成功,则返回 true,否则返回 false。
checkToken(HttpServletRequest request) 方法与 checkToken(String jwtToken) 方法类似,不同点在于它从请求头中获取 jwtToken,而不是作为参数传入该方法。
getMemberIdByJwtToken(HttpServletRequest request) 方法用于从 Token 中获取用户的账户信息。它首先从请求头中获取 jwtToken,然后使用 Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken) 对 jwtToken 进行解析和验证,然后获取其中的 "account" 字段的值,并将其作为字符串返回。
有个接口apis/Login/JWTToken3.0怎么代理成api/Login/JWTToken3.0
如果想要在 Vite 开发环境下通过代理将接口 `apis/Login/JWTToken3.0` 映射到相同的URL `api/Login/JWTToken3.0`,可以在 `vite.config.js` 文件中的 `proxy` 对象里配置。假设你已经设置了服务器监听的端口(默认是3000),可以这样做:
```javascript
export default defineConfig({
server: {
port: 3000,
proxy: {
'/api': {
target: 'http://localhost:8080', // 如果实际 API 位于本地其他端口(这里是8080为例)
pathRewrite: { '^/apis': '/' }, // 将 '/apis' 部分替换为 '/'
changeOrigin: true,
},
},
},
});
```
这个配置表示所有以 `/api` 开头的请求都将被转发到 `http://localhost:8080/api/Login/JWTToken3.0`。`pathRewrite` 用于处理原始路径的重写,这里的 `'^/apis': '/'` 意味着任何以 `/apis` 开始的路径会变成根路径 `/`。
阅读全文