Symfony2 Best Practices - правильная организация пакетов, требующих пользователей
Я работаю с Symfony2 в течение нескольких недель, и мне это нравится.
Тем не менее, я немного запутался с аспектом. Скажем, у меня есть два пакета, каждый из которых имеет сущность "Пользователь", в которой хранится информация об этом пользователе.
Однако я хочу иметь возможность выполнять настоящую аутентификацию с любой аутентификацией, которую выберет администратор сайта (даже если это не одна из пользовательских сущностей из моих пакетов).
Каковы наилучшие практики для организации этих сущностей и их связывания, при этом оставаясь гибкими с фактической аутентификацией.
Благодарю.
ОБНОВЛЕНИЕ: Вот пояснение.
Представьте, что у меня есть две связки: форум и вики.
Теперь для пользователей существует много разных данных, которые эти две системы хотели бы сохранить. Таким образом, у каждого будет место для их хранения (например, две разные таблицы). Однако ни один из них не хранит информацию аутентификации, только другую информацию.
Идея заключается в том, что какой бы метод аутентификации ни использовался, они смогут получить этот токен, а затем определить, какие пользовательские данные они должны использовать в своих собственных пакетах. Таким образом, пакеты смогут работать независимо друг от друга, а также независимо от метода аутентификации.
1 ответ
Я думаю, что вы хотите избежать нескольких пользовательских объектов. Чтобы быстро интегрировать некоторые передовые практики в ваше приложение, взгляните на FOSUserBundle. Это даст вам примерно 80% функциональности, которая необходима пользователям для регистрации, входа в систему и т. Д. Создайте свой собственный UserBundle в своем приложении, расширяющем FOSUserBundle. Например, ваш пользовательский объект, вероятно, будет выглядеть так:
use FOS\UserBundle\Entity\User as BaseUser;
/**
* Extend the FOSUserBundle base User class.
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User extends BaseUser {
...
}
Ссылка на эту расширенную сущность пользователя (YourApp\UserBundle\Entity\User
) как каноническая сущность пользователя во всех остальных пакетах вашего проекта.