自学springboot登录部分的jwt&拦截器

JWT令牌(web登录规范)

全称:JSON Web Token
是一种简单的,自包含(啥?),用于通信双方以json数据格式安全的传输信息

1.1组成

1.Header(头),记录令牌类型,签名算法
2.Payload(有效荷载),携带一些自定义信息,默认信息
3.Signature(数字签名),防止Token被篡改,确保安全性,将header,payload,加入指定密钥,通过指定签名算法计算而来

1.2 他只是一个工具,只需要关注如何使用(以下是重点

1.生成

  • 引入工具的pom依赖坐标
  • 调用

2.验证

  • 注意事项
    – jwt校验时使用的签名密钥,必须和生成jwt令牌是的是一套
    – 如果解析出错,则说明令牌被篡改 或 失效了
    实践
    3.调用
HashMap<String, Object> claims = new HashMap<>();
            claims.put("id",byUserName.getId());
            claims.put("username",byUserName.getUsername());
            String token = JwtUtil.genToken(claims);
            return Result.success(token);

1.3登录验证拦截器

针对众多页面,我们需要一个拦截器对登录验证进行统一校验
1.编写拦截器,实现HandlerInterceptor

@Component
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //令牌验证
        String token = request.getHeader("Authorization");
        //验证token
        try{
            Map<String, Object> claims = JwtUtil.parseToken(token);
            //放行
            return true;
        }catch (Exception e){
            //设置http响应状态码401
            response.setStatus(401);
            //不放行
            return false;
        }
    }
}

2.编写一个配置类实现 WebMvcConfigurer 对拦截器进行注册

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //登录接口和注册接口不拦截
        registry.addInterceptor(loginInterceptor).excludePathPatterns("user/login","user/register");
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值