我一直在研究使用Spring Security来验证/授权我的Web应用程序(这将是基于JDBC的)。
然而,从我的角度来看,核心组件似乎被排除在外。如何注册/创建新用户?是否有开箱即用的API?
我是否需要从头开始编写用户注册和管理? 我需要做的事情包括: - 注册新用户 - 重置密码 - 通过电子邮件发送用户以激活其帐户 - 通过电子邮件发送用户重置其帐户。
提前谢谢你。
答案 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>