我已经使用护照认证在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(未经授权)。
- 获取http://localhost:8000/api/getUser 401(未经授权)zone-evergreen.js:2952
- ERROR HttpErrorResponse {header:HttpHeaders,status:401,statusText:“未经授权”,url:“ http://localhost:8000/api/getUser”, ok:false,…} core.js:6014
以下代码用于按角度调用路线:
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);
}
我已经尝试了很多方法来解决此问题,并在此处查看所有票证, 但问题尚未解决。
答案 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()));
}