【发布时间】:2015-07-29 22:06:05
【问题描述】:
我似乎在配置 spring mvc 和 spring security 时遇到问题,因为它总是在控制器内部循环(试图获取静态内容)
SecurityConfiguration.java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Inject
public UserDetailsService userService;
@Inject
public void configureGlobal(AuthenticationManagerBuilder auth)throws Exception{
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
/*@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers();
}//*/
public void configure(HttpSecurity http) throws Exception{
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/connect/**", "/**/*.{js,css,html}").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.and().logout()
.logoutUrl("/logout").permitAll();
}
}
控制器
@Controller
class Main {
@RequestMapping(name = "/login",method=RequestMethod.GET)
public String index(@AuthenticationPrincipal User user): {
if(user != null){return "login";/*always enters here after login no matter the url*/}
else{ return "redirect:/index";}
}
}
问题在于,无论我给它的 url(例如 /pankackes)是否尝试使用该请求映射(使用调试器检查)
编辑 1 没提,但我的目录结构已经是这样了
src/
main/
resources/
static/
dist/
styles/
jspm_packages/
index.html
templates/
login.html
java/
.../
main.java
...
【问题讨论】:
-
总是转发登录的问题吗?
-
是的,这就是问题所在,它总是转发到“/login”
-
登录的实现在哪里?
-
是spring security默认的,在SecurityConfiguration.java的configureGlobal函数中
-
请告诉我它是否有效
标签: spring-mvc spring-security spring-boot