2012-06-04 2 views
1

Я использую плагин Spring Security Core и могу успешно регистрировать пользователей в моем приложении и из него. Однако, когда пользователь успешно подписывается, я не понимаю, как установить контекст безопасности пользователя в postback для регистрации, чтобы они могли быть перенаправлены на защищенную страницу без необходимости повторного входа в систему. Любая помощь приветствуется. Благодарю.Создание учетной записи безопасности Grails - Spring

ответ

0

В конце концов я наткнулся на эту ссылку, которая делает трюк: https://stackoverflow.com/a/7112838/469106

Вот содержание этой ссылке:

Если у вас нет пароля, вы можете загрузить пользователя с помощью

def user = User.findByUsername(username) 

и установка массива полномочий в 3-параметрическом конструкторе. Создайте с помощью

Авт
GrantedAuthority[] auths = user.authorities.collect { new GrantedAuthorityImpl(it.authority) } 

Затем вы можете пропустить вызов аутентификации() и использование:

SecurityContextHolder.context.authentication = new UsernamePasswordAuthenticationToken(username, 'unknown', auths) 
2

Другая ссылка вы ссылаетесь 2-х лет. С тех пор я добавил метод reauthenticate в SpringSecurityService. См. Раздел «6.2 SpringSecurityService» в документах: http://grails-plugins.github.com/grails-spring-security-core/docs/

+0

Спасибо. Я действительно не понимаю, как это работает. Если я сам называю «springSecurityService.reauthenticate userInstance.username», как «SecurityContext» знает, какие полномочия имеют имя пользователя? Это первый запрос на аутентификацию, который пользователь когда-либо сделал, так как он совершенно новый. – skaz

+0

Прочтите источник :) Это в основном то, что вы делаете, за исключением того, что он загружает пользователя из базы данных. –