Spring Security用户帐户注册,创建和管理

Mo *_*o . 19 authentication spring spring-security user-registration java-ee

我一直在研究使用Spring Security来验证/授权我的Web应用程序(这将是基于JDBC的).

但是,从我的角度来看,核心组件似乎被排除在外.如何注册/创建新用户?是否有开箱即用的API?

我是否需要从头开始编写用户注册和管理?我需要做的事情包括: - 注册新用户 - 重置密码 - 通过电子邮件发送用户激活他们的帐户 - 通过电子邮件发送给用户以重置他们的帐户.

先感谢您.

Jay*_*Jay 9

我在我的项目中使用Spring Security.根据您的要求,该框架没有用于创建或注册用户的API.为了使Spring Security在多个框架中具有通用性和可用性,在您编写自定义代码之前,它只能带您到目前为止.您无法真正获得有关要使用的框架或工具的更具体的答案,因为此时您将只使用您已经使用的框架.

如果您已将其设置为在数据库中使用用户和角色,则可以在数据访问层中在用户表中创建记录,或者在该记录中更新密码(最好存储为哈希).正如Aravind所说,Spring确实提供了电子邮件支持.

如果你真的想看到一种方法:我使用的是Spring MVC,JSP和Hibernate.我在JSP中使用Spring的表单标签将新的用户表单绑定到Person对象,我的控制器方法将该Person对象传递给我的Dao以保持它.

控制器方法签名看起来像这样......

@RequestMapping(value = "/newUser", method = RequestMethod.POST)
public ModelAndView createNewUser(final @Valid @ModelAttribute Person user,
                                  final BindingResult result,
                                  final SessionStatus status,
                                  final @RequestParam(value = "unencodedPassword", required = true) String password) {
        ...
        user.getRoles().add(new Role(user, Role.APPLICATION_ROLE.ROLE_USER));
        userDao.createNewUser(user);
        ...
}
Run Code Online (Sandbox Code Playgroud)

而且我的PersonDao会使用Hibernate来持久保存用户

@Transactional
public void createNewUser(Person user)
{
    Session session = sessionFactory.getCurrentSession();
    session.save(user);
    session.flush();
}
Run Code Online (Sandbox Code Playgroud)

  • 是的我建议你从头开始写一个.为了让您了解您需要编写多少内容,要注册一个新用户,我可能有十几行JSP,Spring MVC控制器中的十几行,以及DAO中的几行.Spring Security可以帮助你完成大部分工作,你应该编写很少的代码来完成它.没有API来处理Spring之外的用户创建的原因是你只需要使用你已经使用的任何技术,比如JSP或JSF,以及Hibernate或JDBC. (2认同)