Я хочу использовать OpenId для входа на сайт, но для регистрации моему сайту нужна дополнительная информация (среди прочего, имя пользователя и адрес электронной почты), которая не всегда возвращается от поставщика OpenId.На мой взгляд, у меня есть два основных варианта:
(1) Сперва, запросите URL-адрес OpenId, перенаправьте и подтвердите через поставщика OpenId, а затем вернитесь на мой сайт и введите дополнительную информацию.Это позволяет мне предварительно заполнить вторую форму, если информация будет возвращена от поставщика OpenId, что является плюсом, но минусы включают, где хранить идентификатор, возвращенный провайдером ** и имеющим многоэтапный процесс регистрации, который может отталкивать.
(2) Одна форма, которая отображает всю необходимую информацию, включая URL-адрес поставщика OpenId.При отправке сохраните информацию в БД, перенаправьте в OpenId, подтвердите и при возврате от провайдера обновите запись БД, включив в нее идентификатор.Это проще, но означает, что я никогда не использую какую-либо дополнительную информацию, возвращаемую поставщиком OpenId, так как форма заполняется до аутентификации.
Я действительно только после некоторых идей / мыслей относительно лучшего подхода?Я использую DotNetOpenAuth с ASP.NET MVC 3, если это имеет какое-либо значение.
** это секрет, который не может быть отправлен клиенту, поэтому должен быть сохранен на сервере.Невозможно поместить в таблицу базы данных регистрации, потому что у меня нет других не пустых полей на этом этапе.Не разрешено использовать сессию, так куда я ее положу?