У меня есть хотя бы одна модель в моем проекте 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 и после успешной проверки подлинности снова возьмет любую другую релевантную информацию и выведет ее через свои собственные свойства.