2010-10-12 85 views
2

我正在写一个模块来强制密码已过期的用户更新其密码。这个应用程序使用acegi security plugin。在检测到过期凭证后,用户将被重定向到“插入新密码”页面。但是,提交表单时,会执行auth操作,而不是所需的操作(renewPassword)。Grails + Acegi:如何处理密码更新?记录与未记录的用户

我怀疑这是因为用户没有登录,所以我想知道是否存在更好的方法。

例如,让用户登录,但禁用其帐户直到他/她刷新其密码。

这是正确的路吗?任何人都可以分享他/她的经验吗?

更新

试想想它,因为acegi是做所有的“检查过期证书”的工作,我将无法登录的用户,然后改变它,因为我在认证得到一个CredentialsExpiredException失败。那么有没有办法做到这一点?

在此先感谢

+0

是否有可能触发已到期的异常,并根据此操作(在这种情况下重定向或执行renewPassword)? – onaclov2000 2010-10-12 13:04:57

回答

0

终于解决了它的“简单,不是程序化的,conf 。文件“的方式。

SecurityConfig.groovy我增加了一个入口到requestMapString

/login/renewpassword = IS_AUTHENTICATED_ANONYMOUSLY 

通过这种方式,可以在不登录的用户执行的loginControllerrenewpassword行动。

谢谢大家对你的时间。

1

我建议允许登录,但在你的代码中设置一个重定向标志,他们推到密码更改页面,所以即使他们试图改变到另一个位置的网站,它将他们推回密码更改页面。 (我不知道如何用这种语言编写代码,因为我从来没有用过它,但是我建议解决看似限制)