角度 laravel 未经授权的 401 错误

Posted

技术标签:

【中文标题】角度 laravel 未经授权的 401 错误【英文标题】:angular laravel unauthorized 401 error 【发布时间】:2019-01-12 02:00:54 【问题描述】:

好吧,我不知道我做错了什么,但我真的尝试了一切。 在 agular 中,我只是发送用户数据来注册

signUp(userData: LoginData) 
    return this.http.post(`$this.rootPathapi/signup`, userData);
  

在后台

public function login()
    
        $credentials = request(['email', 'password']);

        if (! $token = auth()->attempt($credentials)) 
            return response()->json(['error' => 'Email or password doesn\'t exist'],
                401);
        

        return $this->respondWithToken($token);
    

    public function signup(signUp $request)
    
        User::create($request->all());
        return $this->login();
    

注册

public function authorize()
    
        return true;
    

    public function rules()
    
        return [
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required'
        ];
    

它将新用户添加到数据库,但我总是收到 401 错误,表示用户未获得授权。这很奇怪,我无法理解我做错了什么...... 字段 REMEMBER_TOKEN 为空,但我认为这不是问题...

【问题讨论】:

你是否在 Laravel 端获取请求数据? 您可以粘贴您的路线定义吗?确保您的路由不在 api 路由文件中,因为您无法在这些路由上设置会话数据。如果是,请尝试将路由移至网络路由文件。 但是我使用 laravel 作为 api 的角度,所以我认为路由应该是 api... 我尝试查看凭据的价值,它们绝对没问题,所以现在我比以前更加困惑。一切似乎都很好,但它不起作用...... 我还看到我在数据库中的密码没有加密(它们是用户在登录时写的)这可能是个问题吗? 【参考方案1】:

我想添加一些信息,以防它对其他人有用。我已经解决了与此相关的问题。 我在 Angular 7 和 Laravel 5.7 作为 API REST 工作。在 Angular 中,我创建了一个拦截器,以便“自动”添加标题。 然后,我为私有路由创建了 API,也遇到了上述这些问题。 POSTMAN 和 Advanced REST 运行良好,问题出在 Angular 的请求上。 现在,我在每个 HTTP 请求中手动添加了标头,如下所示;

//'GET'请求示例

userLogOut(): Observable<any[]> 
    let parameters = new HttpHeaders();
    parameters = parameters.set('Authorization', "Bearer " + this.session.getToken());
    return this.http.get<any[]>(this.usersUrl + 'logout',  headers: parameters );

//'POST'请求示例

userLogOut(): Observable<any[]> 
    let parameters = new HttpHeaders();
    parameters = parameters.set('Authorization', "Bearer " + this.session.getToken() );
    return this.http.post<any[]>(this.usersUrl + 'logout', '',  headers: parameters  );

它们都运行良好。 不要忘记在构造函数中添加它

private http: HttpClient 

import  HttpClient, HttpHeaders, HttpParams  from '@angular/common/http';

希望对你有帮助!

【讨论】:

以上是关于角度 laravel 未经授权的 401 错误的主要内容,如果未能解决你的问题,请参考以下文章

在内部生成 laravel 护照令牌。 401错误未经授权

从角度访问webapi时出现401未经授权的错误

不断收到 401 未经授权的“无效凭据”Laravel Passport

401 未经授权使用带有 Laravel Passport 的不记名令牌

Laravel 护照 oauth 路线总是返回 401 未经授权

在 Laravel 护照、vueJS 和 Axios 中获得未经授权的 401