后端接口测试报错401 Unauthorized

postman测试接口报错401 Unauthorized

问题描述

初学者在运行项目时可能出现的问题,由于项目配置了拦截器,在访问接口时可能会报错 401 Unauthorized
以我自己学习的一个项目为例:
在这里插入图片描述

原因分析

由于是一个后台管理系统,配置了用户的登录验证。

  @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 登录接口和注册接口不拦截
        registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login","/user/register");
    }
@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //令牌验证
        String token = request.getHeader("Authorization");
        //验证token
        try {
            //从redis中获取相同的token
            ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
            String redisToken = operations.get(token);
            if (redisToken==null){
                //token已经失效了
                throw new RuntimeException();
            }
            Map<String, Object> claims = JwtUtil.parseToken(token);

            //把业务数据存储到ThreadLocal中
            ThreadLocalUtil.set(claims);
            //放行
            return true;
        } catch (Exception e) {
            //http响应状态码为401
            response.setStatus(401);
            //不放行
            return false;
        }
    }

这里的代码使得项目只能直接访问登录和注册接口,而其他接口必须要进行认证。此时咱们可以观察一下,这里是通过redis存储token的

解决方法

正是因为有token访问的限制,那我们就去拿到token不就好了
所以直接访问利用已有的账号进行登录,获得token
当然,有些项目中不直接在这里返回token,大家得自己根据项目代码找找token在哪
在这里插入图片描述

拿到token就就好办了,直接添加在其他接口访问的header中
在这里插入图片描述
这下问题就解决了!赶紧试试吧

这是我自己在跟着学习项目时遇到的一个小问题,不知道大家对这个问题还有什么要补充的,欢迎在评论区交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着猪看大海

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值