Я реализую приложение, использующее пружинную безопасность 3.0.2 с входом в систему OpenId и регистрацией. Я могу войти в систему успешно, но если пользователь не регистрируется, я хочу сделать:
1) Получите некоторые атрибуты OpenId как электронная почта и имя.
2) Покажите пользователю форму регистрации только с этими двумя полями и заполненным OpenId URI.
Я искал много, но я не нашел "ellegant" способ сделать это. Интересно, могут ли некоторые из Вас выпустить решение реализовать эту стратегию в моем приложении.
Заранее спасибо.
Вы не можете показать адрес электронной почты и имя до того, как пользователь зарегистрируется / войдет в систему, поскольку он должен сначала разрешить приложению доступ к своему профилю. Вы можете показать ему эту страницу с его openid, mail и т. Д. после того, как он вошел в систему.
Определите, какие атрибуты вы хотите использовать:
<openid-login login-page="/openidlogin.jsp" authentication-failure-url="/openidlogin.jsp?login_error=true">
<attribute-exchange>
<openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" count="2"/>
<openid-attribute name="name" type="http://schema.openid.net/namePerson/friendly" />
</attribute-exchange>
</openid-login>
А затем получить доступ к атрибутам после того, как пользователь вошел в систему:
OpenIDAuthenticationToken token = (OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();
Взгляните на пример из репозитория Spring и документацию поддержки OpenId .