gpt4 book ai didi

java - 将 Spring Security 与 JPA 结合使用

转载 作者:IT老高 更新时间:2023-10-28 13:52:31 25 4
gpt4 key购买 nike

我是 Spring 新手。

我们正在使用 Spring 安全功能。数据库连接:JPA 的eclipselink 实现。数据库:MySql

使用spring security时,认证提供者的配置如下,-

<authentication-provider>

<jdbc-user-service id="userDetailsService" data-source-ref="Datasource" />

</authentication-provider>

但是在 JPA 中我们没有定义数据源,我们使用 Persistence 单元和提供者 jpa.PersistenceProvider.

那么我们如何配置身份验证提供程序以便使用 JPA 进行数据库连接?

data-source-ref 字段究竟应该包含什么才能使用数据库进行身份验证?

提前谢谢你。

最佳答案

基本上你可能需要implement UserDetailsService yourself .

因此,例如,您将拥有一个 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>

关于java - 将 Spring Security 与 JPA 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com