吐槽ngalain

14次阅读

共计 809 个字符,预计需要花费 3 分钟才能阅读完成。

前言

使用 Ng-aialin 有一段时间了,虽然有坑,但是还是自己掌握的不熟练,这个问题也困惑了我一段时间

问题分析

  1. 在使用前端框架不登录时发送 http 请求
  2. 请求不能发出
  3. 代码

service:

` public getAll(): Observable<Array<Website>> {return this.httpClient.get<Array<Website>>(`${this.baseUrl}`);
}`

ts:

`this.websiteService.getAll().subscribe((res)=> {
            this.websiteList = res;
            console.log(res);
        },() => {this.msg.error('error');
            console.log('error');
        });`
        
一个非常简单的 get 请求获取全部的数据

问题

在控制台没有找不到该网络请求

同样控制台也会打印错误

很明显,前台在发送请求时,就没有发送出去(被拦下了),不然控制台不可能没有请求

原因

看了拦截器的代码,发现自己写的拦截器没有任何问题,问了张喜硕顺便查了一下资料。

发现:Ng-aialin 默认实现了拦截器,在发送 http 请求的时会默认添加token,如果没登录,没有token,它就会将你的请求拦下(它认为你只有登录才能发请求)参考文章

解决办法

在发送 http 请求的时候带上_allow_anonymous 参数 允许匿名登录,也就是不带 token 是也让它发送请求。

在控制台可以看到发送的请求,但是还有问题那就是报: 401

401 非常常见的状态码,没有权限,那解决也就非常简单了

解决 401

由于后台配置了 Spring Security 会对后台的任何请求进行认证保护,在请求时没有登录,所以就会出现 401 的错误了

忽略对该请求的认证保护

请求成功

在此发送请求,状态码 200,请求成功

总结

在 ng-alain 的文档中并没有说明,这也是我掉坑的原因,希望对其他人有所帮助。

正文完
 0