通过JPA使用Spring Security
我是Spring的新手。
我们正在使用Spring Security功能。数据库连接:JPA的eclipselink实现。数据库:MySql
使用security" title="spring security">spring security时,身份验证提供程序的配置如下-
<authentication-provider> <jdbc-user-service id="userDetailsService" data-source-ref="Datasource" />
</authentication-provider>
但是在JPA中,我们没有定义数据源,我们将Persistence unit与provider一起使用 jpa.PersistenceProvider.
那么,我们如何配置身份验证提供程序,以便将JPA用于数据库连接?
数据源引用字段应包含什么内容才能使用数据库进行身份验证?
先感谢您。
回答:
基本上,您可能需要实现UserDetailsService
自己。
因此,例如,您将拥有一个User
实体,并且您的UserDetailsService
实现将查找用户并将其转换为UserDetails
对象(或者您的实体将必须实现UserDetails
)。
public class MyUserDetailsService implements UserDetailsService{ private EntityManager entityManager;
@PersistenceContext
public void setEntityManager(EntityManager newEm){
this.entityManager = newEm;
}
public UserDetails loadUserByUsername(String username){
// assuming that you have a User class that implements UserDetails
return entityManager.createQuery("from User where username = :username", User.class)
.setParameter("username", username)
.getSingleResult();
}
}
并将其添加到用户spring-security.xml
<authentication-manager> <authentication-provider user-service-ref="MyUserDetailsService" />
</authentication-manager>
以上是 通过JPA使用Spring Security 的全部内容, 来源链接: utcz.com/qa/412545.html