后端接口测试报错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中
在这里插入图片描述
这下问题就解决了!赶紧试试吧

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

### Harbor 401 Unauthorized 错误原因 当尝试通过 `docker login` 或者 Kubernetes 拉取镜像时收到 401 Unauthorized 错误,通常意味着客户端未能提供有效的凭证来完成身份验证过程。具体来说: - 客户端提供的用户名或密码不匹配 Harbor 中存储的凭证[^2]。 - Docker 守护进程未被配置为信任自签名证书(如果适用),导致 HTTPS 请求失败并返回授权错误而不是 SSL/TLS 握手失败的信息[^3]。 对于后者,在某些情况下即使 Web UI 可以正常工作,命令行工具也可能因为缺少必要的安全设置而遭遇此问题。 ### 解决方案 #### 方法一:确认凭证准确性 确保用于登录的账户名和密码是最新且正确的。如果是管理员默认账户,请检查是否已更改过初始密码;如果不是,则需核实输入无误,并考虑重置该用户的密码以排除记忆偏差的可能性。 #### 方法二:更新 Docker 配置文件 为了使 Docker 能够接受来自特定主机的安全风险警告(例如使用了不受信 CA 签发的证书),可以在 `/etc/docker/daemon.json` 文件内添加目标注册表到 insecure-registries 列表中: ```json { "insecure-registries": ["http://20.0.0.100"] } ``` 之后重启 Docker 服务让修改生效。 #### 方法三:重新初始化 Harbor 数据库 有时数据库中的会话信息或其他临时数据可能导致持续性的认证失败。可以尝试停止当前运行的服务实例并通过 prepare 工具清理环境后再启动新实例: ```bash cd /path/to/harbor/ ./prepare docker-v docker-compose up -d ``` 最后再次测试能否顺利登录。 #### 方法四:创建 Image Pull Secrets 并应用至 Pod 针对基于 Kubernetes 的场景,除了上述措施外还需要保证集群内的节点能够识别私有仓库的身份验证凭据。为此应先创建 Secret 对象保存访问令牌,再将其关联给负责部署的应用程序使用的 Service Account: ```yaml apiVersion: v1 kind: Secret metadata: name: my-harbor-secret type: kubernetes.io/dockerconfigjson data: .dockercfg: <base64-encoded-auth-file> --- apiVersion: v1 kind: ServiceAccount metadata: name: default secrets: - name: my-harbor-secret ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

骑着猪看大海

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

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

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

打赏作者

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

抵扣说明:

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

余额充值