Laravel 5.3 Auth - Возможность зарегистрироваться и войти в систему, а также продолжить в качестве гостя
В настоящее время я разрабатываю веб-сайт с Laravel, где пользователи могут зарегистрироваться, а затем войти в систему, чтобы что-то сделать на моей странице.
Теперь я планирую ввести возможность действовать как гость, чтобы они могли "Войти как гость", а затем действовать как обычный пользователь (но без возможности постоянного сохранения информации, которую они там вводят). Кроме того, они всегда должны иметь возможность изменить эту гостевую учетную запись на постоянную, введя свой почтовый адрес и пароль. Я думал о том, чтобы просто создать нового пользователя в db, когда он нажимает на логин как гость, как обычный зарегистрированный пользователь, а затем удаляет его, но я не уверен, что это легко сделать... Есть ли способ "легко" сделать это или у вас есть идеи о том, как это сделать?
Зарегистрированный пользователь должен иметь возможность делать много вещей, таких как изменение своих адресов, информации, отправка заявки, подписка на новостную рассылку и т. Д., Гости смогут только положить что-то в свою корзину и купить ее (и пока купив, они также должны иметь возможность создать учетную запись..) Также я знаю, что мне может потребоваться реализовать настраиваемую защиту для аутентификации гостевого пользователя (поскольку обычно им требуется пароль, я хочу, чтобы они только вводили свой почтовый адрес для "войти в систему". Но, конечно, мне нужен ключ сеанса, который будет сгенерирован и т. д., так что это часть охраны... Но что мне нужно сделать, чтобы создать такой собственный защитник, который бы полностью справился с моими проблемами? Я нашел ларавеллу Документ для этого ( https://laravel.com/docs/5.3/authentication), но не могу совместить это с моей проблемой....
PS: Я использую Laratrust для разных ролей на странице, поэтому я могу показывать разные меню или другую информацию для гостевого пользователя после входа с его почтовым адресом. Но все же, вопрос в том, как это сделать... Спасибо за любую помощь!
Редактировать: Подумав об этом еще раз, я хочу немного прояснить ситуацию. Я в основном планирую изменить страницу входа в систему и добавить кнопку типа "продолжить как гость" и определить маршрут как guestLogin
для этого. Этот маршрут будет указывать на контроллер, который каким-либо образом входит в систему с использованием (возможно, самодельной) аутентификации. При нажатии на кнопку, запись добавляется в users
таблица в моей базе данных, только с идеей и токеном запоминания. Затем гость может разместить товары в своей корзине и что-то заказать. В процессе заказа ему необходимо ввести свою личную информацию, такую как адрес, адрес электронной почты и т. Д. Затем он также имеет возможность установить флажок для автоматической регистрации, введя пароль. Затем его информация также сохраняется в БД (в строке, созданной для гостевого пользователя).
PS: Опять же, на Laratrust, я бы создал роль гостя, чтобы показать именно те страницы, которые я хочу, чтобы он показывал, а также пользовательские страницы оформления заказа. Таким образом, единственная реальная проблема - это вход в систему (с помощью специального средства проверки подлинности, которое я понятия не имею, как его реализовать), а также последующая регистрация для пользователя, который в основном уже существует (даже если пока это просто идентификатор в db).
Я надеюсь, что вы поняли мою идею.
1 ответ
Аутентификация и авторизация работают вокруг сохранения и запоминания пользователя, который запрашивает ресурс у сервера. Чтобы иметь возможность помнить, вы должны использовать либо сеанс, либо базу данных, либо любой другой механизм хранения.
Вы должны брать достаточно информации о пользователе, чтобы идентифицировать гостя, например. по электронной почте, так как они собираются выполнять некоторые операции, а позже мы должны найти пользователя, который внес изменения в текущее состояние данных / приложения.
Сохраните эту электронную почту или другую информацию в пользовательской таблице базы данных или создайте гостевую роль с помощью Laratrust. Это просто простая роль гостя, которая может выполнять операции с основными деталями, не вводя пароль.
Посмотрим, поможет ли это, иначе мы можем погрузиться в более подробное обсуждение.