@Controller注释未正确映射Spring Security 4登录页面

时间:2016-12-05 11:19:19

标签: spring-security spring-boot

@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映射时不起作用?

0 个答案:

没有答案