Auth :: check () возвращает false в Laravel 5.4

Я использую laravel 5.4 в качестве бэкэнда для своего приложения, а для интерфейса я использую angular. Я использую laravel auth для аутентификации.

Проблема в том, что Auth::attempt() работает нормально, и если я немедленно распечатываю Auth::user(), он распечатывает данные, но возвращает false, если я пытаюсь получить его следующим методом. Но эта функция отлично работает на размещенном сервере.

Протестировано,

  1. Смена сеанса из файла в базу данных.
  2. Изменения в kernel.php (Содержимое промежуточного программного обеспечения $).
  3. Сделал ли php artisan make: auth еще раз.
  4. Внес изменения в столбец пользовательской таблицы.
  5. Добавление частного $ primarykey = 'id' в модель.
  6. Добавление промежуточного программного обеспечения для всех маршрутов.

Это мой контроллер

namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;

public function login()
{
 if (Auth::attempt(['email' => $email, 'password' => $password ])) 
        {
            $response = array('response' =>'Succssfully Login!' , 'success' => true);

            return $response;
        }
 }

Здесь я использую Auth::check() в том же контроллере

public function check() 
{
    if (Auth::check())
        $response = array('response' =>'Authenticated' , 'success'=>true);
    else
        $response = array('response' =>'UnAuthenticated' , 'success'=>false);

    return $response;    
}

Я смущен, потому что тот же код отлично работает на размещенном сервере, но не работает на localhost. Нужно ли мне для этого делать какие-либо изменения, связанные с http в laravel?

вы загружаете свой angular index.html с помощью шаблона лезвия или его на совершенно другом сервере / p.s. угловое приложение не загружается из laravel

Anand Siddharth 29.03.2018 14:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
630
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваше приложение Angular находится за пределами laravel и загружается без использования шаблона лезвия для загрузки точки входа вашего приложения Angular, то есть index.html Angular, то происходит то, что Laravel не может установить сеанс для приложения, следовательно, когда вы запрашиваете в следующий раз ваш laravel не может распознать сеанс, поэтому он выдает false при вызове Auth::check().

Чтобы добиться аутентификации на внешнем сервере (например, в приложении Angular в вашем случае), вы должны использовать либо клиент паролей Laravel Passport, либо аутентификацию на основе JWT с использованием https://github.com/tymondesigns/jwt-auth <- this package. (Инструкции к файлу readme пакета)

Для угловых и веб-приложений я бы предпочел использовать JWT.

Спасибо за ответ, вы правы, базовый Auth не будет работать для комбинации laravel и angular, но я удивлен, увидев, что он работает на размещенном сервере. Как вы предложили, я собираюсь использовать jwt-auth.

Rajat 03.04.2018 09:01

Другие вопросы по теме