我正在尝试用angular/java设置身份验证。对于java部分,我有所有的过滤器工作,所以我只能在没有令牌的情况下进入/登录。唯一不起作用的是检查用户密码并为inmemoryauthentication以外的其他人分发令牌目前这是一个用户和一个管理员。如何链接我的users实体(我有users server dao controller等等),以便在检查了数据库中的所有用户的密码后,将令牌提供给他们。
这就是我现在所拥有的:
@Configuration
@EnableWebSecurity
//@EnableOAuth2Sso
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserService userService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().antMatchers("/login").permitAll()
.anyRequest().authenticated() // cualquier otra peticion requiere autenticacion
.and()
.addFilterBefore(new LoginFilter("/login", authenticationManager()),
UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(new JwtFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("{noop}password").roles("USER").and().withUser("admin")
.password("{noop}password").roles("ADMIN");
//// here I want to add all my users from the database
}
}
1条答案
按热度按时间w9apscun1#
您可以使用JDBCAuthenticationBuilder来存储和检索数据库中的所有用户。
首先定义要使用的模式
schema.sql
-然后是一些样本数据
data.sql
-更新应用程序属性以指向正确的数据库-
还要告诉hibernate您没有使用默认模式,因此应该禁用
ddl-auto
财产然后您可以更新您的安全配置,如下所示-