Мне интересно, как мне создать собственную страницу входа? Я попробовал следующие руководства, такие как https://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html и http://www.baeldung.com/spring-mvc-tutorial#configviews, но безрезультатно, так как я не могу заставить классы WebMvcConfig
работать. Я продолжаю получать 404 ошибки. Вот мои текущие файлы
Класс конфигурации безопасности
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
/**
*
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and()
.formLogin().loginPage("/login").permitAll();
http.authorizeRequests().antMatchers("/stats").hasRole("ADMIN")
.and().formLogin().loginPage("/login");
//everything else ADMIN and USERS can see
http.authorizeRequests().antMatchers("/").hasAnyRole("ADMIN","USER")
.and().formLogin().loginPage("/login");
}
@Autowired
DataSource dataSource;
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
Файл login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>HERE!!!!</h1>
<form action="${contextRoot}/login" method="post">
<input type="text" name="username" value="username"/>
<input type="password" name="password"/>
<input type="submit" value="Login"/>
</form>
</body>
</html>
и класс веб-конфигурации Mvc
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}