自定义登录在Spring中不起作用

时间:2014-12-10 11:35:26

标签: jsp spring-mvc spring-security

我们正在尝试创建自定义登录页面。我们的配置方法如下所示

@Override
    protected void configure(HttpSecurity http) throws Exception {
        //http.csrf().disable().formLogin();UserDetailsService

        http.csrf().disable().formLogin().loginPage("/login");
    }

我们正在使用UserDetailsS​​ervice类来存储用户数据。

@Autowired
    private UserDetailsService userDetailsService;

我们在Web-Inf / views文件夹结构下创建了login.jsp。现在,如果尝试点击登录页面,我们会在控制台中收到如下错误。

“web.servlet.PageNotFound:1120 - 在名为'spring'的DispatcherServlet中找不到带有URI [/ login]的HTTP请求的映射”。

我是Spring框架的新手,任何人都可以帮我找到我错的地方。

下面我粘贴了完整的SecurityConfig类代码

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }

    @Bean(name = "authMgr")
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //http.csrf().disable().formLogin();

        http.csrf().disable().formLogin().loginPage("/login");
    }

}

1 个答案:

答案 0 :(得分:0)

可能对某些人有所帮助。问题是我说它应该搜索jsp文件的spring。在WebMvcConfigurerAdapter类中提供以下方法后,自定义登录工作正常。

@Bean
    public InternalResourceViewResolver jspViewResolver() {
        InternalResourceViewResolver jspViewResolver = new InternalResourceViewResolver();

        jspViewResolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);
        jspViewResolver.setRedirectHttp10Compatible(false);
        jspViewResolver.setPrefix("/WEB-INF/views/");

        jspViewResolver.setSuffix(".jsp");
        jspViewResolver.setOrder(2);

        return jspViewResolver;
    }