Попытка аутентификации Laravel не работает или всегда возвращает false? - PullRequest
0 голосов
/ 14 февраля 2019

Я искал повсюду (я проверил все дубликаты вопросов и ответов), не повезло.Я не понимаю, что я делаю неправильно, все значения поступают из поста, но Auth: попытка продолжает давать сбой / возвращает false, если я пытаюсь ввести логин вручную, он не будет аутентифицироваться, как я ожидаю, также я делаюдолжны сделать или использовать отдельные методы, такие как для проверки, учетные данные, имя пользователя .. и т.д.?

Вот мой контроллер входа в систему> метод входа в систему

public function login(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'usermail'    => 'required|max:255',
            'password'    => 'required_with:usermail',
        ],[
            'password.required_with'  => "The password field is empty."
        ]);
        if ($validator->fails()) {
            return redirect()
                        ->route('admin.login')
                        ->withErrors($validator)
                        ->withInput();
        }
        $usermail = $request->get('usermail');
        $password = $request->get('password');
        $remember = $request->get('rememberMe');

        if(filter_var($usermail, FILTER_VALIDATE_EMAIL)) {
            $isEmailExist = User::where('user_email',$usermail)->first();
            if($isEmailExist != null){
                if(Auth::attempt([
                        'user_email' => $usermail,
                        'user_pass'  => $password
                ])){
                    return redirect()->intended('admin/dashboard');
                }else{
                    return back()->with([
                        'message'   => '<strong>ERROR</strong>: The password you entered for the email address <strong>'.$usermail.'</strong> is incorrect. <a href="'.route('admin.password.request').'">Lost your password?</a>'
                    ]);   
                }
            }else{
                return back()->with([
                    'message'   => '<strong>ERROR</strong>: Invalid email address.'
                ]);
            }
        }else{
            $isUsernameExist = User::where('user_login',$usermail)->first();
            if($isUsernameExist != null){
                if(Auth::attempt([
                        'user_login' => $usermail,
                        'user_pass'  => $password
                ],$remember)){
                    return redirect()->intended('admin/dashboard');
                }else{
                    return back()->with([
                        'message'   => '<strong>ERROR</strong>: The password you entered for the username <strong>'.$usermail.'</strong> is incorrect. <a href="'.route('admin.password.request').'">Lost your password?</a>'
                    ]);
                }
            }else{
                return back()->with([
                    'message'   => '<strong>ERROR</strong>: Invalid username. <a href="'.route('admin.password.request').'">Lost your password?</a>'
                ]);
            }
        }
    }

А это моя схема миграции пользователя,

Schema::create('vw_users', function (Blueprint $table) {
            $table->bigIncrements('ID');
            $table->string('user_login','60')->unique()->default('');
            $table->string('user_pass');
            $table->string('user_email','100')->unique()->default('');
            $table->rememberToken();
        });

Вот как я заполняю пользователя,

User::create([
    'user_login'            => 'admin',
    'user_pass'             => Hash::make("123456"),
    'user_email'            => 'admin@gmail.com',
]);

1 Ответ

0 голосов
/ 14 февраля 2019

OK OK OK, я заставил это работать, я думаю, что в laravel Framework мы можем только создать имя столбца для поля «пароль» в таблице аутентификации базы данных.

Я обновил следующие изменения: -

  • Я переименовал имя поля пароля из схемы миграции с "user_pass" в "пароль" .(Также обновлено в контроллере входа и модели пользователя).
  • Добавлен следующий код в модель пользователя: -

    use Illuminate\Notifications\Notifiable;
    
    class User extends Authenticatable
    {
     use Notifiable;
     ...
    }
    

Я дважды проверил, чтобы подтвердить, поэтому явернитесь назад, это не сработало.

Если я кому-нибудь что-нибудь объясню, пожалуйста, дайте мне знать и помогите мне понять.Я посмотрел очень похожие посты, подобные этому Laravel: Как я могу изменить имя поля пароля аутентификации по умолчанию Могу ли я иметь справочник или блог для всех предопределенных библиотек и функций laravel?Я знаю, что папка продавца полна сюрпризов, но все же мне нужно больше ссылок.

Большое спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...