Auth :: try () в Laravel 5.5 всегда возвращает false - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Hash, чтобы зашифровать пароль в моей сеялке, а в контроллере я использую Auth для проверки запроса от клиента, но он всегда возвращает false, я не знаю почему.

Это код:

Мой 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::attempt () всегда возвращает false.

1 Ответ

0 голосов
/ 12 ноября 2018

Удалить Hash::make из поля ввода пароля. Когда вы используете Auth::attempt, он получит хеш-значение по умолчанию и выполнит поиск в БД.

Попробуйте

$password = $request->input('password'); # remove Hash::make

if( Auth::attempt(['mssv' =>$username, 'pass' => $password])) { # remove quotes

Как предотвратить внедрение SQL в Laravel?

...