JWT生成token 以及token的验证,实现一个账号不能同时多地登录

本文介绍如何使用JWT生成token并在用户登录时存入Redis,同时前端将token置于Header中。通过请求过滤器进行请求拦截,验证token,并实现同一账号不能多地登录的功能。确保过滤器在启动类上添加注解以启用此功能。
摘要由CSDN通过智能技术生成
  <!-- 生成token-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.9.0</version>
        </dependency>

工具类


import cn.hutool.core.date.DateUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.HttpRequestHandler;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

@Slf4j
@Component
public class TokenUtils {
   

    @Autowired
    private static HttpServletRequest httpServletRequest;
    //密钥
    public static final String SECRET = "ShanXiSiKaoZheTongChengDaoJia";
    //过期时间:秒
    public static final int EXPIRE = 300;

    /**
     * 生成Token
     */
    public static String getToken(String userId,String SECRET){
   
//        //过期时间
//        Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
        return JWT.create().withAudience(userId) 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(JSON Web Token)是一种基于 JSON 的开放标准(RFC 7519),用于在各方之间安全地将声明作为 JSON 对象传输。JWT通常用于身份验证和授权。JWT由三部分组成:头部、载荷和签名。 在使用 JWT 进行身份验证时,服务器会在用户登录成功后生成一个 JWT,并将其发送给客户端。客户端将 JWT 存储在本地,每次向服务器发送请求时,都需要在请求头中携带该 JWT。服务器在接收到请求后,会验证JWT 的有效性,并根据 JWT 中的信息进行相应的处理。 JWT 的优点是可以减轻服务器的压力,因为服务器不需要在每次请求时都去查询数据库进行身份验证。同时,由于 JWT 中已经包含了足够的信息,服务器可以快速地进行权限验证和授权。 如果要实现 JWT登录验证,可以按照以下步骤进行: 1. 用户在登录成功后,服务器生成一个 JWT,并将其发送给客户端。 2. 客户端将 JWT 存储在本地,例如在 LocalStorage 或者 Cookie 中。 3. 客户端在向服务器发送请求时,需要在请求头中携带该 JWT。 4. 服务器在接收到请求后,需要验证JWT 的有效性。服务器可以根据 JWT 的头部信息,结合自己的密钥对 JWT 进行解密,验证 JWT 的签名是否正确。 5. 如果 JWT 验证通过,则说明当前用户已经登录。服务器可以根据 JWT 中的信息,进行相应的权限验证和授权。 需要注意的是,JWT 中的信息是可以被解密的,因此在 JWT 中不应该存储敏感信息,例如用户的密码等。如果需要存储敏感信息,可以考虑使用加密算法对其进行加密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值