Спасибо Иану Робертсу.
Он дает мне этот ответ, который точно решает мою проблему.
Его ответ был:
Как это случилось, я реализовал именно это в одном из моих приложений
вчера :-) К сожалению, это не приложение с открытым исходным кодом, поэтому я не могу просто
укажите на мой код, но я могу объяснить, что я сделал.
Плагин spring-security-openid поддерживает «обмен атрибутами»
механизм OpenID, хотя поддержка не очень задокументирована (если на
все). Насколько хорошо это работает, зависит от провайдера на дальнем конце, но это
по крайней мере, работал на меня, используя Google и Yahoo.
Чтобы запросить адрес электронной почты у провайдера, необходимо добавить
следующие к Config.groovy:
grails.plugins.springsecurity.openid.registration.requiredAttributes.email
= "http://axschema.org/contact/email"
Теперь, чтобы подключить это к процессу регистрации пользователей, вам нужен адрес электронной почты
поле в вашем классе домена пользователя S2, и вам нужно отредактировать сгенерированный
OpenIdController.groovy в нескольких местах.
добавить свойство электронной почты в OpenIdRegisterCommand
в действии createAccount есть строка
«if (! createNewAccount (...))», который передает имя пользователя, пароль и
openid в качестве параметров. Измените это вместе с определением метода на
передать весь командный объект вместо этих двух полей.
в createNewAccount передать значение электронной почты вперед от команды
объект для конструктора объекта домена пользователя.
И, наконец, добавьте поле ввода для электронной почты на ваш
Grails-приложение / просмотров / OpenId / createAccount.gsp.
Вы можете сделать то же самое с другими атрибутами, такими как полное имя.
grails.plugins.springsecurity.openid.registration.requiredAttributes.fullname
= "http://axschema.org/namePerson"
Важно связать это воедино, чтобы вещь после последнего
точка, следующая за requiredAttributes (полное имя в этом примере) должна совпадать
имя свойства в OpenIdRegisterCommand.
С уважением
Чару Джайн