При попытке аутентификации выдает ошибку "TYPE=NOT FOUND statuc=404"
у меня есть веб приложение на spring boot + mvc + security
в какой то момент у меня вылезла проблема "too many redirects" я ее исправил с помощью securityMatchers в конфигурации spring security, но у меня вылезла другая ошибка, как мы знаем спринг автоматически генерирует метод для обработки POST запроса, но когда я удалил свой метод для обработки этого запроса у меня выходила ошибка 405 "method is not allowed", я решил сделать своего рода костыль и написать самому этот метод вот мой итоговый класс LogginController:
@Controller
public class LoginController {
@Autowired
private UserRepository userRepository;
@GetMapping("/login")
public String loginPage(Model model) {
model.addAttribute("user", new User());
return "user/login";
}
@PostMapping("/login")
public String login(Model model, @ModelAttribute User user) {
Optional<User> userFromDB = userRepository.findByUsernameAndPassword(user.getUsername(), user.getPassword());
if (userFromDB.isPresent()){
if (userFromDB.get().getPassword().equals(user.getPassword())){
model.addAttribute("user", userFromDB.get());
return "dashboard";
} else {
System.out.println("Wrong password");
return "login";
}
} else {
return "login";
}
}
}
я знаю что пароль нужно кодировать но я решил временно убрать кодировку чтобы решить проблему, не суть
вот мой класс SpringSecurityConfiguration:
@Configuration
@EnableWebSecurity
public class SpringSecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.securityMatcher("/WEB-INF/views/**")
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(request -> request
.requestMatchers("/login").permitAll()
.anyRequest().authenticated())
.formLogin(AbstractHttpConfigurer::disable);
return http.build();
}
}
сам login.jsp:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="/login" method="post">
<label for="username"> Username:
<input id = "username" type="text" name="username">
</label><br>
<label for="password"> Password:
<input id = "password" type="password" name="password">
</label><br>
<button type="submit">Login</button>
</form>
</body>
</html>
User:
@Data
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@Setter
@NoArgsConstructor
@Builder
@Entity
@Table(name = "users")
public class User extends AuditingEntity<Long> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
@Column(name = "birth_date")
private LocalDate birthdate;
private String firstname;
private String lastname;
@Enumerated(EnumType.STRING)
private Role role;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "company_id")
private Company company;
@Builder.Default
@OneToMany(mappedBy = "user")
private List<UserChat> userChats = new ArrayList<>();
}
так вот решив предыдущие проблемы(хоть и не лучшими способами) у меня вылезла новая, теперь спринг не может найти юзера и выдает ошибку "404 Not Found", я пытался и отключать свою форму логина("login.jsp") и выключал csrf, вобщем пытался исправить но ничего не получилось, никаких серверов(по типу nginx и др) не используются
помогите пожалуйста как решить данную проблему, у меня не осталось ни одной идеи