Yii CUserIdentity против модели пользователя

У меня есть хотя бы одна модель в моем проекте Yii, которая должна будет ссылаться на конкретный идентификатор пользователя. В моем SQL для модели у меня есть что-то вроде CONSTRAINT FOREIGN KEY (user_id) REFERENCES User(id) . Я собирался продолжить создание модели User, когда я столкнулся с документами для CUserIdentity. Должен признать, я смущен. Является ли CUserIdentity пользователем или состоянием, связанным с конкретным случаем пользователя? Я хотел бы использовать как можно больше встроенных функций Yii, поскольку они справляются с множеством проблем, связанных с безопасностью, из того, что я понимаю, и я знаю о существовании некоторых модулей, таких как srbac которые обрабатывают аутентификацию пользователя и управление регистрацией , Пожалуйста, направляйте меня в правильном направлении. (Также под вопросом: какова связь между моделями и компонентами?)

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

С учетом этого: CUserIdentity представляет концепцию «кто есть пользователь», а модель User представляет «информацию о пользователе моего приложения». CUserIdentity применим во всех случаях, когда существует более одного вида пользователей (например, гость), тогда как модель User применима только при хранении информации о пользователях самостоятельно. По общему признанию, в большинстве случаев оба будут применяться, и именно это создает путаницу.

Обычно соотношение между ними состоит в том, что CUserIdentity , чтобы отвечать на такие вопросы, как «кто есть пользователь», «разрешен доступ пользователю к этому ресурсу» и т. Д., Запрашивает модель User из базы данных, чтобы получить нужную ему информацию чтобы ответить на эти вопросы. Эта взаимосвязь между двумя концепциями также задокументирована в окончательном руководстве Yii. После того, как, например, аутентифицировав пользователя, он предоставит некоторую или всю информацию о модели User через свои собственные свойства (которые вы должны определить).

Чтобы привести пример сценария, в котором не было модели User , подумайте о веб-сайте, который позволяет вам войти в систему, используя свою учетную запись пользователя LDAP. Когда CUserIdentity::authenticate метод CUserIdentity::authenticate , компонент будет аутентифицировать учетные данные на сервере LDAP и после успешной проверки подлинности снова возьмет любую другую релевантную информацию и выведет ее через свои собственные свойства.