4.JWT令牌认证_服务器解析token

封装一个工具类,专门生成和解析token:

JwtUtil工具类源码如下:

package com.aibaodian.baymaxexpress.controller;

import com.aibaodian.baymaxexpress.pojo.Result;
import com.aibaodian.baymaxexpress.utils.JwtUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("/address")
public class AddressController {
    @GetMapping("/list")
    public Result<String> addAddress(@RequestHeader(name = "Authorization") String token, HttpServletResponse response){
        //验证token,取协议头的Authorization,如果验证不报异常,则返回数据,报异常,则返回401,401需要response
        try{
            Map<String, Object> claims = JwtUtil.parseToken(token);
            return Result.success(" 地址列表....");
        }catch (Exception e){
            response.setStatus(401);
            return  Result.error("未登录");
        }
        //检验工作全部放到拦截器里面.
//        return Result.success("所有地址列表....");
    }
}

然后controller层addAddress方法解析token,方法需要两个形参,第一个形参,取请求头的Authorization这个就是token,第二个形参,response,解析失败则响应401.

如果每次都在接口上解析,这重复了,不优雅,需要一个实现一个拦截器,在拦截器上来处理token.记得要加上@Component注册到ioc容器中.

然后需要实现MVC配置类中的添加拦截器addInterceptors方法,把我们的loginInterceptors注册进去,而且,我们需要考虑到,浏览器访问注册和登录接口时,根本就不需要token的呀,所以还需要设置不拦截的地址.

浏览器访问登录和注册接口时,不验证token

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值