Я новичок в Spring Security.У меня есть простое приложение mvc, и проблема возникает, когда я хочу вызвать метод post контроллера, значение запроса сопоставления которого совпадает со значением loginProcessingUrl.
Класс контроллера:
@Controller
public class LoginController {
@RequestMapping(value = "/showlogin", method = RequestMethod.GET)
public String showLogin() {
System.out.println("Showing login...");
return "login";
}
// this method is not being invoked
@RequestMapping(value = "/authuser", method = RequestMethod.POST)
public void printUserData() {
System.out.println("Printing user data...");
}
}
Класс конфигурации:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
User.UserBuilder users = User.withDefaultPasswordEncoder();
auth.inMemoryAuthentication()
.withUser(users.username("dejan").password("dejan").roles("EMPLOYEE"))
.withUser(users.username("marko").password("marko").roles("ADMINISTRATOR"));
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/showlogin")
.loginProcessingUrl("/authuser")
.permitAll()
.and()
.csrf().disable();
}
}
Страница входа в систему:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form th:action="@{/authuser}" method="post">
Username: <input type="text" name="username" />
Password: <input type="password" name="password" />
<input type="submit" value="Login" />
</form>
</body>
</html>