Я использую laravel 5.4 в качестве бэкэнда для своего приложения, а для интерфейса я использую angular. Я использую laravel auth для аутентификации.
Проблема в том, что Auth::attempt() работает нормально, и если я немедленно распечатываю Auth::user(), он распечатывает данные, но возвращает false, если я пытаюсь получить его следующим методом. Но эта функция отлично работает на размещенном сервере.
Протестировано,
Это мой контроллер
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 находится за пределами 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.
вы загружаете свой angular index.html с помощью шаблона лезвия или его на совершенно другом сервере / p.s. угловое приложение не загружается из laravel