2016-11-10 8 views
2

Я новичок в Ларавеле. Я пытаюсь использовать несколько Auth в Laravel 5.3 и мой файл auth.php является:Почему Auth :: попытка всегда возвращает false в Laravel 5.3?

<?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, 
     ], 
    ], 

]; 

Затем, когда я храню клиентов или Курьеры в БД, я использую bcrypt пароля (Bring также использовать функцию Hash::make() для паролей). Например, моя модель Курьер:

<?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); 

    } 

У меня есть метод, называемый аутентификацию, но попытка метод всегда возвращает ЛОЖЬ (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 на вашей модели.

Смежные вопросы