java - Spring Security Login with a twist : users must activate their account before login

标签 java spring security authentication

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

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

关于如何实现的任何想法?我需要以某种方式连接到登录过程。

谢谢!

最佳答案

不需要自定义 AuthenticationManager。这个特性在 Spring Security 中已经可用。看看 doc ,您可以看到 enabled 属性。创建用户时,如果将该属性设置为 false 并且用户尝试登录,Spring 将自动显示一条消息,通知用户帐户未激活。

已更新

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

<c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />

关于java - Spring Security Login with a twist : users must activate their account before login,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11187500/

相关文章:

java - Micronaut 未经授权的请求,存在重定向问题

java - netbeans 8.0.2 - 无法正确打印 utf-8 字符

java - 如何递归列出目录中的所有 .rar 文件

java - 在 Samsung Galaxy S9 上检索所有者信息

java - 创建 Riot CMS Spring Java 项目

java - ehcache hibernate二级缓存,hibernate自动驱逐

java - Spring Boot HIbernate 问题 : Error executing DDL via JDBC Statement with ddl-auto=create-drop

security - 我在 Cloudant 上存储用户私有(private)数据的方法是否安全?

api - client_id 和 client_secret OAuth2 &OAuth 流类型之间的区别

java - 关于 "for"语句中迭代器对象的问题