我正在编写一个模块来强制密码已过期的用户更新其密码。此应用使用acegi security plugin。检测到过期凭据后,用户将被重定向到“插入新密码”页面。但是,在提交表单时,会执行auth
操作,而不是所需的操作(renewPassword
)。
我怀疑这是因为用户没有登录,所以我想知道是否有更好的方法。
例如,让用户登录,但在他/她刷新密码之前禁用其帐户。
这是正确的方法吗?任何人都可以分享他/她的经历吗?
来考虑一下,因为acegi正在进行所有“检查过期凭据”工作,我无法将用户登录然后更改它,因为我得到CredentialsExpiredException
在身份验证失败。有没有办法做到这一点?
提前致谢
答案 0 :(得分:1)
我建议允许登录,但在代码中设置重定向标记以将其推送到密码更改页面,因此即使他们尝试更改到网站中的其他位置,也会将其推回密码更改页。 (我不知道如何使用这种语言对其进行编码,因为我从未使用它,但是我建议如何解决这个看似的限制)
答案 1 :(得分:0)
最终解决了“简单,不是程序化,配置文件”的方式。
在SecurityConfig.groovy
中,我在requestMapString
/login/renewpassword = IS_AUTHENTICATED_ANONYMOUSLY
这样,renewpassword
内的loginController
操作可以在用户无需登录的情况下执行。
感谢大家的时间。