自定义登录在 Spring 中不起作用
Posted
技术标签:
【中文标题】自定义登录在 Spring 中不起作用【英文标题】:Custom Login not working in Spring 【发布时间】:2015-02-08 14:08:35 【问题描述】:我们正在尝试创建自定义登录页面。我们的configure方法写如下
@Override
protected void configure(HttpSecurity http) throws Exception
//http.csrf().disable().formLogin();UserDetailsService
http.csrf().disable().formLogin().loginPage("/login");
我们正在使用 UserDetailsService 类来存储用户数据。
@Autowired
private UserDetailsService userDetailsService;
我们在 Web-Inf/views 文件夹结构下创建了 login.jsp。现在,如果尝试点击登录页面,我们会在控制台中收到如下错误。
“web.servlet.PageNotFound:1120 - 在 DispatcherServlet 中找不到带有 URI [/login] 的 HTTP 请求的映射,名称为“spring””。
我是 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");
【问题讨论】:
你有控制器吗? 没有用于登录的控制器。我在 WebMvcConfigurerAdapter 扩展类中提供了 jspViewResolver,现在我的自定义登录工作了 【参考方案1】:可能对某些人有帮助。问题是我不敢说它应该在哪里搜索 jsp 文件。在 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;
【讨论】:
以上是关于自定义登录在 Spring 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
杰克逊自定义反序列化器在 Spring Boot 中不起作用