Проверка подлинности Laravel не работает

#php #laravel #laravel-5 #laravel-5.2

#php #laravel #laravel-5

Вопрос:

Я работаю с laravel 5.2, и у меня проблема с настраиваемой аутентификацией. Это не приводит к входу пользователя в систему.
Здесь вы можете найти мой код для функции:

 public function login(Request $request)
{
    $this->validateLogin($request);

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

    if(! is_null($user))
    {
        if (Auth::login($user))
        {
            return redirect('/profile');
        }
    }
    else
    {
        $this->register($request);
    }
}
  

Вместо Auth::login я попробовал также функцию attempt и check, но ничего не работало…
Он регистрирует пользователя, но показывает пустую страницу без перенаправления на URL.

Ответ №1:

Вы видите пустую страницу вместо перенаправления на ‘/profile’, потому что ваше второе условие if никогда не выполняется как

 Auth::login($user)
  

никогда не возвращает значение null, даже если пользователь вошел в систему
итак, в основном

 if (Auth::login($user))
    {
        return redirect('/profile');
    }
  

это если в вашем случае условие никогда не выполняется.

Вы можете попробовать это

 public function login(Request $request)
{
    $this->validateLogin($request);

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

    if(! is_null($user))
    {
        Auth::login($user);
        if (Auth::check())
        {
            return redirect('/profile');
        }
    }
    else
    {
        $this->register($request);
    }
}


Auth::check();
  

вернет true, если пользователь вошел в систему, и будет перенаправлен в ‘/profile’.