@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**", "/js/**", "/img/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/login")
.failureForwardUrl("/login?error")
.successForwardUrl("/admin")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/login?logout")
.permitAll();
}
}
以上WebSecurityConfig
仅在使用以下类映射时才有效:
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
}
当我尝试用控制器替换上述映射时,登录请求未正确处理并出现以下错误:
ERROR 290168 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet dispatcherServlet threw exception
这是我的控制器的样子:
@Controller
public class AdminController extends BaseController {
@RequestMapping(value = "/login")
public String login(Model model) {
return "login";
}
}
知道为什么AdminController
请求映射在WebMvcConfigurerAdapter
映射时不起作用?