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) как каноническая сущность пользователя во всех остальных пакетах вашего проекта.

Другие вопросы по тегам