在Spring 4和Hibernate中使用/配置Spring Security

时间:2016-03-06 22:33:42

标签: spring spring-security

我想用Spring Security实现Spring 4 MVC应用程序的登录/注销(认证/授权)系统。

目前我使用一个非常简单的手工实现,除了通过使用自定义服务方法通过用户名查找用户并比较加密密码,将输入的用户名和MD5哈希密码与数据库值进行比较时,基本上只做了。

如果密码匹配,则登录成员的用户名将保存在会话中,并且ControllerAdvice会在每次请求之前使用会话中的用户名为用户查找成员对象。 checkLogin方法返回true是用户名和密码匹配:

@Service("loginService")
@Transactional
public class LoginServiceImpl implements LoginService {

private MemberDao dao;

//more methods

@Override
public boolean checkLogin(String username, String password) {

    String hashedPassword = getPasswordHash(password);
    return dao.checkLogin(username, hashedPassword);

}
}

这确实有效,但不是一个非常优雅的解决方案,不处理不同的角色,可能不是很安全。此外,我想熟悉Spring Security。

阅读Spring Security的官方教程(http://docs.spring.io/spring-security/site/docs/4.0.4.RELEASE/reference/htmlsingle/#tech-userdetailsservice)对我来说,对Login服务方法进行身份验证的方式并不清楚。

本教程讨论了直接针对数据库的身份验证,但是我找不到任何关于使用Service方法执行身份验证的信息,在我的分层架构中,数据库隐藏在Servoce和Dao(Hibernate)层之后。

本教程中的大多数示例都使用基于XML而不是基于Java的配置,我将其用于我的应用程序。 在搜索引擎搜索了很多之后,我仍然没有找到一个教程,它使用一个熟悉的使用Service和Dao层的分层结构在Spring MVC应用程序中实现Spring Security。

我是否需要绕过Service和DAO / Hibernate层并针对数据库验证目录?或者编写实现UserDetailsS​​ervice的自定义身份验证提供程序,如本文所述? Spring Security 3 database authentication with Hibernate

仅使用基于Java的配置来配置Spring Security吗?我对这个问题感到有点失落,所以我希望得到一些提示......

0 个答案:

没有答案