Tag: change password

如何使用Spring Security在用户初始登录时强制更改密码

在用户使用Spring Security初次登录时,实现强制密码更改的最佳方式是什么? 我尝试实现这里提到的自定义AuthenticationSuccessHandler ,但正如rodrigoap所提到的,如果用户在地址栏手动输入URL,即使用户没有更改密码,用户仍然可以继续访问该页面。 我用filterForceChangePasswordFilter做了这个。 因为如果用户手动键入url,他们可以绕过更改密码表单。 使用filter,请求始终被截获。 因此,我继续实施自定义filter。 我的问题是,当我实现自定义filter并在其中发送重定向时,它会再次通过filter,从而导致无限重定向循环,如此处所述。 我尝试通过在security-context.xml中声明两个http标签来实现所提到的解决方案,第一个标签具有pattern属性,但它仍然通过我的自定义filter: … … 我当前的实现(有效)是: 在我的自定义身份validation成功处理程序中,我设置了一个会话属性isFirstLogin 在我的ForcePasswordChangeFilter中,我检查是否设置了会话isFirstLogin 如果是,那么我发送重定向到我的强制密码更改 否则,我调用chain.doFilter() 我对此实现的问题是访问我的资源文件夹也会通过此filter导致我的页面失真(因为* .js和* .css未成功检索)。 这就是我在我的安全应用程序context.xml中尝试使用两个标记的原因(这不起作用)。 因此,如果servletPath启动或包含“/ resources”,我最终必须手动过滤请求。 我不希望它像这样 – 必须手动过滤请求路径 – 但现在它就是我拥有的。 这样做的优雅方式是什么?