Spring Security登录:用户必须在登录前激活他们的帐户

che*_*ist 5 java security authentication spring

我已经实施了spring security以保护我们网站的各个部分.我使用DB(MongoDB)来存储用户名/密码.我实现了org.springframework.security.core.userdetails.UserDetailsS​​ervice来查找数据库中的帐户详细信息.

我还需要添加其他功能:帐户激活.注册后,我们会向用户发送激活电子邮件,如果他点击它,我们会在DB中将该帐户标记为已激活.未激活其帐户的用户不应该被允许登录,应该被重定向到该页面.

有关如何实施的任何想法?我需要以某种方式挂钩登录过程.

谢谢!

jdd*_*lla 10

不需要自定义AuthenticationManager.Spring Security中已提供此功能.看看文档,你可以看到enabled属性.创建用户时,如果将该属性设置为false并且用户尝试登录,则Spring将自动显示一条消息,通知用户该帐户未处于活动状态.

更新

要显示Spring错误消息,您应该在登录页面中使用它:

<c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />
Run Code Online (Sandbox Code Playgroud)