gpt4 book ai didi

java - Spring security JDBC 身份验证是否会在每个请求时访问数据库

转载 作者:行者123 更新时间:2023-12-01 19:38:23 24 4
gpt4 key购买 nike

我使用 Spring Security 框架编写了一个程序,并使用 DataSource 使用 JDBC 方法。以下是一段代码。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private DataSource dataSource;

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/users/**").hasRole("USER")
.antMatchers(HttpMethod.POST, "/users/**").hasRole("ADMIN")
.antMatchers(HttpMethod.PUT, "/users/**").hasRole("ADMIN")
.antMatchers(HttpMethod.PATCH, "/users/**").hasRole("ADMIN")
.antMatchers(HttpMethod.DELETE, "/users/**").hasRole("ADMIN")
.and().httpBasic();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource);
}
}

该程序使用 Spring 框架期望的默认表。现在我的问题是,因为在这里我使用 httpBasic 身份验证方法,当我来 GET/users url 时,Spring 框架是否会在每个请求和具有凭据的有效用户上命中表,或者在第一次身份验证后缓存并针对该缓存进行验证。

谁能帮我理解一下。

提前致谢

最佳答案

如果您使用无状态 HTTP Basic,数据库将默认在每个请求上“命中”。如果您发现问题,可以像这样设置缓存:

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource).userCache(userCache);
}

参见UserCache javadoc有关可以使用哪些缓存实现的详细信息。

关于java - Spring security JDBC 身份验证是否会在每个请求时访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56564875/

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