吐槽ng-alain

前言

使用Ng-aialin有一段時間了,雖然有坑,可是仍是本身掌握的不熟練,這個問題也困惑了我一段時間html

問題分析

  1. 在使用前端框架不登陸時發送http請求
  2. 請求不能發出
  3. 代碼

service:前端

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

ts:web

`this.websiteService.getAll().subscribe(
        (res)=> {
            this.websiteList = res;
            console.log(res);
        },() => {
            this.msg.error('error');
            console.log('error');
        });`
一個很是簡單的get請求獲取所有的數據

問題

在控制檯沒有找不到該網絡請求
image.png
一樣控制檯也會打印錯誤
image.png前端框架

很明顯,前臺在發送請求時,就沒有發送出去(被攔下了),否則控制檯不可能沒有請求

緣由

看了攔截器的代碼,發現本身寫的攔截器沒有任何問題,問了張喜碩順便查了一下資料。網絡

發現:Ng-aialin 默認實現了攔截器,在發送http請求的時會默認添加token,若是沒登陸,沒有token,它就會將你的請求攔下(它認爲你只有登陸才能發請求)參考文章框架

image.png

解決辦法

在發送http 請求的時候帶上_allow_anonymous 參數容許匿名登陸,也就是不帶token是也讓它發送請求。
image.png
在控制檯能夠看到發送的請求,可是還有問題那就是報: 401
image.pngthis

401 很是常見的狀態碼,沒有權限,那解決也就很是簡單了

解決401

因爲後臺配置了Spring Security會對後臺的任何請求進行認證保護,在請求時沒有登陸,因此就會出現401的錯誤了spa

image.png

忽略對該請求的認證保護

請求成功

image.png

在此發送請求,狀態碼200,請求成功

總結

在ng-alain的文檔中並無說明,這也是我掉坑的緣由,但願對其餘人有所幫助。
相關文章
相關標籤/搜索