Я создал API для входа в мое веб-приложение. После проверки параметров используйте метод Auth: loginUsingId () с идентификатором пользователя, который будет авторизован.
После этого я получаю аутентификацию правильно, фактически выполнение echo Auth :: user () правильно показывает свойство пользователя.
Однако, после перенаправления на другую страницу проекта, я больше не захожу на портал и показываю мне страницу входа.
Похоже, сеанс пользователя не сохраняется или не создается вообще.
Я использую Laravel 5.6. У меня нет промежуточного программного обеспечения для маршрута.
Каждый раз, когда ваша страница обращается к API, она, по сути, говорит с совершенно новым экземпляром API.
Думайте об этом так. Ваша конечная точка «входа в систему» на самом деле не говорит API, чтобы кто-то входил в систему. Она просто говорит о том, что вызывающий абонент утверждает, что данный пароль принадлежит данному пользователю, конец истории. Если вы хотите превратить эту аутентификацию в реальное поведение при входе в систему с точки зрения пользовательского интерфейса, вам нужно предпринять и другие шаги.
Если Laravel подает файлы Blade для вашего сайта, то это другая история. Из коробки он генерирует сеанс Php для вас и отправляет cookie сессионного ключа в браузер для использования в последующих запросах.
Подобно ключу сеанса, для поддержания сеанса между веб-сайтом и отдельным API-интерфейсом каждый последующий вызов должен включать токен. И вам нужна конечная точка входа в систему, чтобы предоставить этот токен при успешной аутентификации.
Паспорт — один из способов, но он может быть излишним для вашей ситуации. Паспорт хорош для обработки пользователей, клиентов и разрешений авторизации. Но если все, что вам нужно, это аутентификация, и вы не так заинтересованы в контроле того, к чему у них есть доступ, тогда я настоятельно рекомендую Tymon JWT-Auth.
И Passport, и JWT-Auth используют «токены на предъявителя» в заголовке «Авторизация». Однако есть и другие виды, такие как «основные токены». Основной токен — это просто закодированная конкатенация имени пользователя и пароля. Laravel поддерживает это с промежуточным программным обеспечением маршрута, но я все еще рекомендую идти с JWT.
Одна из приятных особенностей JWT заключается в том, что вы можете включать посторонние данные в сам токен. И это позволяет вам лучше опираться на Passport (OAuth2), если / когда вам это нужно, не требуя, чтобы ваша клиентская сторона меняла метод аутентификации.
Других решений пока нет …