如何使用Hibernate 3 Annotated Classes配置Spring Security 2数据库身份验证?

JMM*_*JMM 3 spring jpa spring-security

我正在使用Hibernate 3(带JPA Annotations),Spring 2.5和Spring Security 2.0.5构建应用程序.

我想知道我需要<authentication-provider>在spring安全配置文件(applicationContext-security.xml)中放入我的标签,以便我可以让Spring Security使用我现有的Service层类(AuthenticationService)来处理我的自定义用户和角色域对象.

据我所知,Spring Security要求两个表存在以下模式:

     create table users(
      username varchar_ignorecase(50) not null primary key,
      password varchar_ignorecase(50) not null,
      enabled boolean not null);

  create table authorities (
      username varchar_ignorecase(50) not null,
      authority varchar_ignorecase(50) not null,
      constraint fk_authorities_users foreign key(username) references users(username));

  create unique index ix_auth_username on authorities (username,authority);;
Run Code Online (Sandbox Code Playgroud)

但我想使用自己的域对象,这些对象与上面的表定义不同.

有人可以指点我这里正确的方向吗?我找不到任何有用的文档,我不确定我想做的事情是否真的可行.

谢谢!

axt*_*avt 8

您可以将自定义实现UserDetailsService为域和Spring Security之间的桥梁.然后您按如下方式为Spring Security提供它(对于Spring Security 2.x):

<security:authentication-provider user-service-ref='myUserDetailsService'/>

<bean id="myUserDetailsService" class="... your implementation ...">
    ...
</bean>
Run Code Online (Sandbox Code Playgroud)