2016-11-10 1 views
2

저는 Laravel에서 새로운입니다. 나는 Laravel 5.3에서 여러 인증을 사용하려고 내 auth.php 파일은 다음과 같습니다Laravel 5.3에서 Auth :: attempt가 항상 false를 반환하는 이유는 무엇입니까?

<?php 

return [ 

    */ 

    'defaults' => [ 
     'guard' => 'web', 
     'passwords' => 'users', 
    ], 

    'guards' => [ 
     'web' => [ 
      'driver' => 'session', 
      'provider' => 'users', 
     ], 

     'api' => [ 
      'driver' => 'token', 
      'provider' => 'users', 
     ], 

     'courier' => [ 
      'driver' => 'session', 
      'provider' => 'couriers', 
     ], 

     'client' => [ 
      'driver' => 'session', 
      'provider' => 'clients', 
     ] 
    ], 

    'providers' => [ 
     'couriers' => [ 
      'driver' => 'eloquent', 
      'model' => App\Courier::class, 
     ], 

     'clients' => [ 
      'driver' => 'eloquent', 
      'model' => App\Client::class, 
     ], 

     'users' => [ 
      'driver' => 'eloquent', 
      'model' => App\User::class, 
     ] 
    ], 

    'passwords' => [ 
     'couriers' => [ 
      'provider' => 'couriers', 
      'table' => 'password_resets', 
      'expire' => 60, 
     ], 

     'clients' => [ 
      'provider' => 'clients', 
      'table' => 'password_resets', 
      'expire' => 60, 
     ], 
    ], 

]; 

그럼,이 DB에 클라이언트 또는 택배를 저장할 때, 나는 암호 기능 Hash::make()을 사용 (암호 bcrypt 사용도 가져). 예를 들어, 내 모델 택배는 다음과 같습니다

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class Courier extends Authenticatable 
{ 
    [..] 

    public function setPasswordAttribute($pass){ 
     $this->attributes['password'] = bcrypt($pass); 
    } 

    [..] 
} 

그리고 택배, 내 컨트롤러에 나가있을 때 갱신 :

public function update(Request $request, $id) { 

     $fieldsCourier = $request->all(); 
     $courier = Courier::find($id); 

     if(isset($fieldsCourier['password'])) 
      $fieldsCourier['password'] = bcrypt($fieldsCourier['password']); 

     if($courier->update($fieldsCourier)) 
      $courier = Courier::find($id); 

    } 

을 나는 방법이라고 인증하고 있지만, 항상 false (invalid_credentials)을 반환하는 방법 시도가 . 그럼에도 유효한 자격 증명을 보내십시오 .. 이것은 내 코드입니다 :

public function authenticate(Request $request) { 
     $credentials = $request->only('email', 'password'); 

     try { 
      if (auth()->guard('courier')->attempt($credentials)){ 
       $user = Auth::guard('courier')->user(); 
      } else { 
       return response()->json(['error' => 'invalid_credentials'], 401); 
      } 
     } catch (JWTException $e) { 
      return response()->json(['error' => 'could_not_create_token'], 500); 
     } 

     return response()->json(compact('user')); 
    } 

내가 뭘 잘못하고 있는지 모르겠습니다. 뭐 잘못 됐어?

답변

0

모델과 컨트롤러에서 암호를 두 번 암호화합니다.

단지

예컨대 그 중 하나를 제거 : 이미 모델에 bcrypt을 사용했기 때문에, 컨트롤러에 bcrypt를 사용하지 마십시오.

관련 문제