Auth:: try () в laravel 5.5 всегда возвращает false
Я использую Hash для шифрования пароля в моей сеялке, а в контроллере я использую Auth для проверки запроса от клиента. но он всегда возвращает ложь, я не знаю почему.
это весь код:
мой HomeController:
public function login(Request $request) { $username = $request->input('username'); $password = $request->input('password'); if( Auth::attempt(['mssv' =>$username, 'pass' =>$password])) { $success = new MessageBag(['successlogin' => 'welcome']); return view('welcome')->withErrors($success); } else { $errors = new MessageBag(['errorlogin' => 'Login fail']); return redirect()->back()->withInput()->withErrors($errors); } } }
моя сеялка имеет:
DB::table('sinhvien')->insert([ 'hoten' => 'Nguyễn Ngọc Anh Thư', 'mssv' =>'DH51400668', 'pass' =>Hash::make('DH51400668'), 'created_at'=>date("Y-m-d H:i:s"), 'updated_at'=>date("Y-m-d H:i:s") ]);
моя модель
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $table='sinhvien' ; protected $fillable = [ 'mssv', 'hoten', 'pass', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'pass', 'remember_token', ]; }
и мой роутер имеет:
Route::post('/login', 'HomeController@login');
но когда я запрашиваю информацию о сиде, Auth:: try () всегда возвращает false
1 ответ
Решение
Удалить Hash::make
из поля ввода пароля. Когда вы используете Auth::attempt
по умолчанию он получит хеш-значение и выполнит поиск в БД.
Пытаться
$password = $request->input('password'); # remove Hash::make
if( Auth::attempt(['mssv' =>$username, 'pass' => $password])) { # remove quotes