我刚刚完成了一个基于的Spring应用程序inMemoryAuthentication(),现在,经过验证,所有工作都完美无缺,我想使用JDBC身份验证.
我有三种类来处理与数据库的连接:
HibernateConfig,基于此博客文章中提供的代码.
DAO和Entity类,我的数据库中每个表一个(在当前状态下,我有三个:User,Role和User_Role)
还有一个UserService类,它实现了UserDetailsService.
我在互联网上阅读了一些文章,实际上他们都使用SecurityConfig类的以下配置:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery(getUserQuery())
.authoritiesByUsernameQuery(getAuthoritiesQuery());
}
Run Code Online (Sandbox Code Playgroud)
对我来说有什么问题,因为我的项目中没有Datasource类.我目前的SecurityConfig是这样的:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.jdbcAuthentication()
.usersByUsernameQuery(getUserQuery())
.authoritiesByUsernameQuery(getAuthoritiesQuery());
}
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/css/**", "/fonts/**", "/image/**", "/js/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/spring/index").permitAll()
.loginProcessingUrl("/spring/login").permitAll()
.usernameParameter("login")
.passwordParameter("senha")
.successHandler(new …Run Code Online (Sandbox Code Playgroud)