token值的保存以及在header中传入使用

一般登录的时候系统后台会返回一个token值,我们可以新建一个utils工具类文件夹,放置例如token.js之类的处理文件

export function setToken(token){
    return sessionStorage.setItem(tokenkey,token)
}
export function getToken(){
    return sessionStorage.getItem(tokenkey)
}
export function removeToken(){
    return sessionStorage.removeItem(tokenkey)
}

简单说就是在发起登录请求之后,在请求成功时的then()中,使用token.js中的setToken(),将获取到的token值保存至sessionStorage中

而在退出登录等操作中,需要在发起请求时将token值附带在header中,这个可以在axios请求拦截中处理

// 添加请求拦截器
// 在发送请求之前做些什么
axios.interceptors.request.use((config) => {
    // 在header中传入token的操作
    config.headers['token'] = getToken()
    return config;
})

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在网关解析JWT Token时,通常需要使用密钥对Token进行验证和解密。如果您不想在网关使用密钥,可以考虑使用公钥/私钥对来进行验证和解密。 具体地说,您可以在网关将公钥存储在内存或配置文件,然后使用公钥来验证和解密JWT Token。这样做的好处是,您可以将公钥分发给所有需要验证Token的服务,而无需将私钥暴露给任何服务。 以下是一个基本的实现示例: ```java public class JwtTokenInterceptor implements HandlerInterceptor { private static final String AUTH_HEADER = "Authorization"; private static final String BEARER_PREFIX = "Bearer "; private final PublicKey publicKey; public JwtTokenInterceptor(String publicKeyFilePath) { // 从公钥文件加载公钥 publicKey = loadPublicKey(publicKeyFilePath); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 从请求头获取JWT Token String authHeader = request.getHeader(AUTH_HEADER); if (authHeader != null && authHeader.startsWith(BEARER_PREFIX)) { String jwtToken = authHeader.substring(BEARER_PREFIX.length()); try { // 使用公钥验证和解密JWT Token Jws<Claims> claimsJws = Jwts.parserBuilder() .setSigningKey(publicKey) .build() .parseClaimsJws(jwtToken); // 将解密后的JWT Token存储到请求属性,供后续处理使用 request.setAttribute("jwtToken", claimsJws); } catch (JwtException ex) { // JWT Token验证或解密失败 response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return false; } } return true; } private PublicKey loadPublicKey(String publicKeyFilePath) { try { byte[] publicKeyBytes = Files.readAllBytes(Paths.get(publicKeyFilePath)); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); return keyFactory.generatePublic(keySpec); } catch (IOException | NoSuchAlgorithmException | InvalidKeySpecException ex) { throw new RuntimeException("Failed to load public key", ex); } } } ``` 在上面的实现,我们将公钥文件路径作为构造函数参数传入,并在`preHandle`方法使用公钥来验证和解密JWT Token。如果JWT Token验证或解密失败,我们将返回HTTP 401 Unauthorized响应。 请注意,上述实现仅用于演示目的。在实际生产环境,您可能需要更复杂的实现来确保安全性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值