我有一些使用Spring Security JDBC身份验证保护的端点。当我点击我的端点时,浏览器会提示我输入用户名和密码。成功后,Spring通过显示404错误将我转发到localhost:8080
。我知道它是成功的,因为如果我输入无效的用户名和密码,我会在登录表单页面上收到一条错误消息。
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception{
auth.jdbcAuthentication().dataSource(datasource).
usersByUsernameQuery("select username,password, enabled from user where username=?").
authoritiesByUsernameQuery("select username, role from user_roles where username=?");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/getMessages/").hasRole("user")
.antMatchers("/api/getFollowings/").hasRole("user")
.antMatchers("/api/getFollowers/").hasRole("user")
.antMatchers("/api/getFollowings/").hasRole("user")
.antMatchers("/api/follow/").hasRole("user")
.antMatchers("/api/unfollow/").hasRole("user")
.antMatchers("/h2-console/").permitAll()
.and()
.formLogin()
.permitAll()
.usernameParameter("username")
.passwordParameter("password")
.and()
.exceptionHandling()
.accessDeniedPage("/403")
.and()
.csrf()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
这是我的一个终点:
[点击端点后,我提示输入用户名和密码] [2]
[输入用户名和密码后,我被发送到localhost:8080,显示404] [3]