具有Laravel 5.8和Passport认证的HttpErrorResponse未经授权(401)Angular 8

时间:2019-10-10 07:26:27

标签: api authentication laravel-5 angular8 laravel-passport

我已经使用护照认证在laravel 5.8上创建了API。 我在laravel上有以下API路由:

// private routes
Route::middleware('auth:api')->group(function () {
    Route::get('/getUser', 'Api\AuthController@getUser')->name('getUser');
});

// public routes
Route::post('/login', 'Api\AuthController@login')->name('login.api');
Route::post('/register', 'Api\AuthController@register')->name('register.api');

我使用邮递员测试路线,并且有效! 但是当我从角度8调用路由时,公用路由有效,但是专用路由返回错误401(未经授权)。

The error from console

  

以下代码用于按角度调用路线:

import { Headers, RequestOptions } from '@angular/http';
import { HttpClient } from '@angular/common/http'; 

headers: Headers = new Headers();
constructor(private http: HttpClient) {}

getUser(accessToken) {
      this.headers.append('Accept','application/json');      
      this.headers.append('Authorization', 'Bearer ' + accessToken);
      this.options = new RequestOptions({headers: this.headers});
      return this.http.get(this.urlServer, this.options);
    }
  

我已经尝试了很多方法来解决此问题,并在此处查看所有票证,   但问题尚未解决。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决此问题的方法...

  

我通过从angular / http导入旧的Http来更改请求方式   而不是来自angular / common / http的HttpClient。

所以新的angular代码是:

import { Headers, RequestOptions, Http } from '@angular/http'; constructor(private http: Http) {} getUser(accessToken) { return this.http.get(this.server + 'getUser', this.options).pipe( map(res => res.json())); }