Аутентификация Laravel не останется - PullRequest
0 голосов
/ 02 ноября 2018

Я создал API для входа в мое веб-приложение. После проверки параметров используйте метод Auth: loginUsingId () с идентификатором пользователя, который должен войти в систему.
После этого я получаю правильную аутентификацию, фактически делая echo Auth :: user () правильно показывает свойство пользователя.
Тем не менее, после перенаправления на другую страницу проекта я больше не захожу на портал и показываю мне страницу входа.
Похоже, сеанс пользователя не сохраняется или вообще не создается.
Я использую Laravel 5.6. У меня нет промежуточного программного обеспечения для маршрута.

1 Ответ

0 голосов
/ 02 ноября 2018

Каждый раз, когда ваша страница обращается к API, она, по сути, говорит о совершенно новом экземпляре API.

Думай об этом так. Ваша конечная точка «входа в систему» ​​на самом деле не говорит API, чтобы кто-то входил в систему. Она просто говорит о том, что вызывающий абонент утверждает, что данный пароль принадлежит данному пользователю, конец истории. Если вы хотите превратить эту аутентификацию в реальное поведение при входе в систему с точки зрения пользовательского интерфейса, вам нужно предпринять и другие шаги.

Если Laravel подает файлы Blade для вашего сайта, это другая история. Из коробки он генерирует сеанс Php для вас и отправляет cookie сессионного ключа в браузер для использования в последующих запросах.

Подобно ключу сеанса, для поддержания сеанса между веб-сайтом и отдельным API-интерфейсом каждый последующий вызов должен включать токен. И вам нужна конечная точка входа в систему, чтобы предоставить этот токен при успешной аутентификации.

Паспорт - это один из способов, но он может быть излишним для вашей ситуации. Паспорт хорош для обработки пользователей, клиентов и разрешений авторизации. Но если все, что вам нужно, это аутентификация, и вы не так заинтересованы в контроле того, к чему у них есть доступ, тогда я настоятельно рекомендую Tymon JWT-Auth .

И в Passport, и в JWT-Auth используются "токены на предъявителя" в заголовке "Авторизация". Однако есть и другие виды, такие как «основные токены». Основной токен - это просто закодированная конкатенация имени пользователя и пароля. Laravel поддерживает это с промежуточным программным обеспечением маршрута, но я все же рекомендую использовать JWT.

Одной из приятных особенностей JWT является то, что вы можете включать посторонние данные в сам токен. И это позволяет вам лучше использовать Passport (OAuth2), если / когда вам это нужно, не требуя, чтобы ваша клиентская сторона изменила метод аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...