Grails + Acegi: Как справиться с обновлением пароля?Зарегистрированный против незарегистрированного пользователя - PullRequest
2 голосов
/ 12 октября 2010

Я пишу модуль, чтобы заставить пользователя, срок действия пароля которого истек, обновить свой пароль.Это приложение использует плагин безопасности acegi .После обнаружения просроченных учетных данных пользователь перенаправляется на страницу «вставить новый пароль».Однако при отправке формы вместо требуемого (renewPassword) выполняется действие auth.

Я подозреваю, что это происходит из-за того, что пользователь не вошел в систему, поэтому мне было интересноесли есть лучший подход для этого.

Например, позволяя пользователю войти в систему, но отключая его учетную запись, пока он / она не обновит свой пароль.

Это правильный путь?Кто-нибудь может поделиться своим опытом?

update

Если подумать, так как acegi выполняет всю работу по проверке учетных данных, я не будувозможность войти в систему пользователя, а затем изменить его, поскольку я получаю CredentialsExpiredException при сбое аутентификации.Так есть ли способ сделать это?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 12 октября 2010

Я бы предложил разрешить вход в систему, но установив в вашем коде флаг перенаправления, чтобы они переместились на страницу смены пароля, поэтому, даже если они попытаются перейти в другое место на сайте, он вернет их к смене пароля.стр.(Я не знаю, как кодировать его на этом языке, поскольку я никогда не использовал его, но именно так я бы предложил обойти кажущееся ограничение)

0 голосов
/ 13 октября 2010

наконец решил это «простым, не программируемым, конф. Файлом» способом.

В SecurityConfig.groovy Я добавил запись в requestMapString

/login/renewpassword = IS_AUTHENTICATED_ANONYMOUSLY

Таким образом,renewpassword действие внутри loginController может быть выполнено без входа пользователя в систему.

Спасибо всем за потраченное время.

...