2016-11-10 22 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

モデルとコントローラでパスワードを2度暗号化しています。

だけ

例えば、それらのいずれかを削除します。あなたはすでにあなたのモデルにbcryptを使用しているので、あなたのコントローラ上bcryptを使用しないでください。

関連する問題