1

В настоящее время я разрабатываю сайт с Laravel, где пользователи могут зарегистрироваться и после этого войти, чтобы что-то сделать на моей странице.Laravel 5.3 Auth - Возможность зарегистрироваться и войти в систему, но и продолжить как гость

Теперь я планирую представить возможность для гостей в качестве гостя, чтобы они могли «Войти в качестве гостя», а затем действовать как обычный пользователь (но без возможности постоянного сохранения информации, которую они туда вводят). Кроме того, они всегда могут изменить эту гостевую учетную запись на постоянную учетную запись, указав свой почтовый адрес, а также пароль. Я думал о простом создании нового пользователя в db, когда вы нажимаете на логин в качестве гостя, как обычный зарегистрированный пользователь, а затем удаляете его, но я не уверен, возможно ли это легко ... Есть ли способ «легко», сделайте это или у вас есть идеи о том, как это сделать?

Зарегистрированный пользователь должен иметь возможность совершать много вещей, например, изменять свои адреса, информацию, подавать заявку, подписываться на рассылку и т. Д. ..., гости смогут только что-то положить в свою корзину и купить (и при покупке они также должны иметь возможность создавать учетную запись.) Также я знаю, что мне может потребоваться реализовать специальный защитник для аутентификации гостевого пользователя (потому что обычно им нужен пароль, я только хочу, чтобы они введите свой почтовый адрес для входа в систему. Но, конечно, мне нужен ключ сеанса, который нужно создать и т. д., поэтому это часть охранников ... Но что мне нужно сделать, чтобы создать такой настраиваемый защитник, который заполняет мои проблемы ? Я нашел документ laravel для этого (https://laravel.com/docs/5.3/authentication#adding-custom-guards), но не могу его комбинировать с моей проблемой.

PS: Я использую Laratrust для разных ролей на странице, поэтому я мог бы показывать различные меню или другую информацию для гостя после входа в систему с помощью своего почтового адреса. Но все же, вопрос в том, как это сделать ... Thx для любой помощи!

Редактировать: Подумав об этом еще раз, я хочу получить ее немного яснее. Я в основном планирую изменить страницу входа в систему и добавить кнопку «продолжить как гость» и определить для нее маршрут, например guestLogin. Этот маршрут будет указывать на контроллер, который каким-то образом входит в систему с использованием (подходящей самоподготовки) auth. При нажатии кнопки запись добавляется в таблицу users в моей базе данных с единственной идеей и запоминающимся токеном. Затем пользователь может разместить товары в корзине и заказать что-то. В процессе заказа ему необходимо ввести его личную информацию, такую ​​как его адрес, адрес электронной почты и т. Д. Затем он также имеет опцию, чтобы установить флажок, чтобы автоматически зарегистрироваться, введя пароль. Затем его информация сохраняется и в db (в строке, созданной для гостевого пользователя).

PS: Опять же на Laratrust я бы создал роль гостя, чтобы показать именно те страницы, которые я хочу ему показать, а также пользовательские страницы оформления. Таким образом, единственной реальной проблемой является логин (с помощью специального защитника, который я понятия не имею, как его реализовать), а также регистрацию для пользователя, уже существующего (даже если его только идентификатор в db до сих пор).

Надеюсь, у вас есть моя идея.

+0

Я думаю, что это нехорошо обеспечить тот же поток зарегистрированного пользователя к пользователю гостя, что есть место для гостевого и зарегистрированного .. – Sona

+0

@Sona у них не будет таких же возможностей, зарегистрированный пользователь должен иметь возможность делать лоты таких вещей, как изменение их адресов, информация, подача билета, регистрация на рассылку и т. д. ..., гости смогут только поместить что-то в свою корзину и купить его (и при покупке они должны иметь возможность создать учетную запись а также ..) – nameless

+0

Да, исходя из требования, нам нужно ограничить гостя. – Sona

ответ

1

Аутентификация и авторизация работают вокруг сохранения и запоминания пользователя, запрашивающего ресурс с сервера. Чтобы помнить, вам нужно либо использовать сеанс, либо базу данных, либо любой другой механизм хранения.

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

Сохраните эту электронную почту илиную информацию в таблице пользователя или создайте в качестве гостевой роли в Laratrust.Это просто простая гостевая роль, которая может выполнять операции с основными деталями без ввода пароля.

Посмотрите, если это поможет, в противном случае мы сможем погрузиться в более подробное обсуждение.

+0

Должен ли я поэтому иметь дело с Ларавельской гвардией? Или как они «входят в систему»? – nameless

+0

Я имею в виду создание маркера сеанса и т. Д. – nameless

+0

Да, чтобы сделать его более надежным и безопасным, вам следует. –