Grails + Acegi:如何处理密码更新?已记录与未记录的用户

时间:2010-10-12 12:47:21

标签: security grails spring-security change-password

我正在编写一个模块来强制密码已过期的用户更新其密码。此应用使用acegi security plugin。检测到过期凭据后,用户将被重定向到“插入新密码”页面。但是,在提交表单时,会执行auth操作,而不是所需的操作(renewPassword)。

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

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

这是正确的方法吗?任何人都可以分享他/她的经历吗?

更新

来考虑一下,因为acegi正在进行所有“检查过期凭据”工作,我无法将用户登录然后更改它,因为我得到CredentialsExpiredException在身份验证失败。有没有办法做到这一点?

提前致谢

2 个答案:

答案 0 :(得分:1)

我建议允许登录,但在代码中设置重定向标记以将其推送到密码更改页面,因此即使他们尝试更改到网站中的其他位置,也会将其推回密码更改页。 (我不知道如何使用这种语言对其进行编码,因为我从未使用它,但是我建议如何解决这个看似的限制)

答案 1 :(得分:0)

最终解决了“简单,不是程序化,配置文件”的方式。

SecurityConfig.groovy中,我在requestMapString

中添加了一个条目
/login/renewpassword = IS_AUTHENTICATED_ANONYMOUSLY

这样,renewpassword内的loginController操作可以在用户无需登录的情况下执行。

感谢大家的时间。