При попытке аутентификации выдает ошибку "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 и др) не используются

помогите пожалуйста как решить данную проблему, у меня не осталось ни одной идеи


Ответы (0 шт):