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

时间:2011-12-21 23:56:05

标签: spring authentication java-ee spring-security user-registration

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

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

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

提前谢谢你。

3 个答案:

答案 0 :(得分:9)

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

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

如果你真的想看到一种方法:我使用的是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);
        ...
}

我的PersonDao会使用Hibernate像这样持久保存用户

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

答案 1 :(得分:1)

据我所知,Spring Security并没有内置对新用户创建和注册的支持。您必须自己管理。但它确实有电子邮件支持。有关详情,请查看here

答案 2 :(得分:1)

查看我的回答here

  

“我已经为这个用例实现了一个JAVA项目。它是开放的   源码,基于Spring-Security。发布版本已启用   Maven-Central,所以你不需要编译它,但你可以   将它作为maven依赖项提取到你的项目中!“

<dependency>
     <groupId>com.ohadr</groupId>
     <artifactId>authentication-flows</artifactId>
     <version>1.5.0-RELEASE</version> 
</dependency>