изменение способа входа пользователя в Laravel


изменение способа входа пользователя в Laravel

06.10.2020 08:44:20 Источник

Я редактирую проект laravel, который использует модули. Я хочу изменить поле входа с электронной почты на мобильный телефон. В контроллере входа пользователя в модуле входа имеются следующие коды:

$loggedIn = $this->auth->login(
    [
        'email' => $request->email,
        'password' => $request->password,
    ],
    (bool) $request->get('remember_me', false)
);

Я хочу, чтобы пользователь вошел в систему с мобильного телефона, поэтому я меняю коды:

$loggedIn = $this->auth->login (
    [
        'mobile' => $request->email,
        'password' => $request->password,
    ],
    (bool) $request->get('remember_me', false)
);

Но когда я использую этот модифицированный код, он не меняется Это означает, что пользователи все еще могут войти в систему, введя адрес электронной почты! Никакого мобильного!

У вопроса есть решение - Посмотреть?

Ответы - изменение способа входа пользователя в Laravel / change user login method in Laravel

No.The.Hi

06.10.2020 08:46:36

добавьте эти строки в LoginController:

    /**
     * Get the login username to be used by the controller.
     *
     * @return string
     */
    public function username()
    {
        return 'mobile';
    }
Kamlesh Paul

06.10.2020 08:48:53

вы можете использовать пользовательский логин, например

$user = User::where('mobile', $request->email)->first();

if (Hash::check($request->password,$user->password)) {
    auth()->login($user, (bool) $request->get('remember_me', false));  // it will login that user 
}

ссылка на ссылку ref https://laravel.com/docs/8.x/authentication#other-authentication-methods

Примечание: таким образом, у вас есть больше контроля

Является ответом!
noor

06.10.2020 09:13:39

попробуй вот так...

ссылка на источник

  if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
        // The user is being remembered...
    }
Nurbek Boymurodov

06.10.2020 09:37:56

public function __construct()
    {
        $this->middleware('guest')->except('logout');
        $this->mobile = $this->findMobile();
    }
    public function findMobile()
    {
        $login = request()->login;
        $fieldType = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'mobile';
        request()->merge([$fieldType => $login]);
        return $fieldType;
    }
    public function mobile()
    {
        return $this->mobile;
    }
    public function logout(Request $request) {
        Auth::logout();
        return redirect('/login');
    }

Попробуйте это с помощью этого кода Вы можете войти в систему с помощью электронной почты или мобильного телефона

Помочь в развитии проекта:
Закрыть X