java-/ j_spring_security_check HTTP错误404
作者:互联网
似乎未添加某些过滤器.
我将Spring Security 3.2.0.RELEASE与java-config一起使用.
完整项目发布于GitHub
SecurityConfig.java在这里:SecurityConfig.java
我尝试在以下位置设置过滤器:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/app/**").hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/")
.defaultSuccessUrl("/app/")
.failureUrl("/?error=1")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/?logout");
}
在csrf().disable()之后-但是问题没有解决…
请帮助我解决此问题,因为我可以将/ j_spring_security_check与我自己的CustomUserDetailsService结合使用!
解决方法:
我没有使用Spring Security Java Config的经验,但是我检查了您的代码和API,看来设置登录处理URL可以让您登录:
AbstractAuthenticationFilterConfigurer.loginProcessingUrl("/j_spring_security_check")
因此,您的代码应为:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/app/**").hasRole("ADMIN")
.and()
.formLogin()
.loginProcessingUrl("/j_spring_security_check")
.loginPage("/")
.defaultSuccessUrl("/app/")
.failureUrl("/?error=1")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/?logout");
}
我希望这是默认设置.
另外,要使用MyCustomUserDetailsService,而不是像现在那样自动装配(Spring创建的代理),而是手动配置它:
public class MyCustomUserDetailsService implements UserDetailsService {
private UserDAO userDAO;
public MyCustomUserDetailsService(UserDAO userDAO) {
this.userDAO = userDAO;
}
// ...
}
注意,没有@ Service / @ Component批注和通过Ctor注入的DAO.在安全配置中:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Autowired
private UserDAO userDAO;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.and()
.userDetailsService(new MyCustomUserDetailsService(userDAO));
}
// ...
}
现在,我确定UserDetailService已正确配置.并且可以肯定的是,它将在登录应用程序时使用.
我还注意到没有使用用户名和密码.这是因为在login.jsp中,您使用j_username和j_password,而username参数应该是username,而password参数应该是password.
<input type="text" id="username" class="span4" name="username" placeholder="Username" />
<input type="password" id="password" class="span4" name="password" placeholder="Password" />
查看FormLoginConfigurer类.
标签:spring-java-config,spring-security,spring,java,spring-mvc 来源: https://codeday.me/bug/20191029/1964018.html