LINUX.ORG.RU

Кастомная форма логина в Spring security ничего не делает и просто редиректит на себя же

 ,


0

1

Здравствуйте я начинающий программист, так что просьба не кидаться тапками, возникла следующая проблема со Spring Security, используя Spring boot parent 2.0.1RELEASE, я сначала настроил security так чтобы он брал пользователей из бд, все отработало без ошибок, в логах видны запросы к бд, меня редиректнуло в корень, в общем все как надо отработало, но как только я добавил свою форму, при нажатии сабмита, меня просто так же редиректит на саму страницу логина, запросов к бд нет, но эта форма ловит все поползновения к корню, и соответственно я не могу попасть внутрь, я уже просто в тупике ребят, вот конфигурация security

import com.grabduck.demo.springsecurity.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserService userService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/readme.txt", "/css/*").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage("/login").permitAll()
                .and()
                .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll();

    }

    @Bean
    public PasswordEncoder bcryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .userDetailsService(userService)
                .passwordEncoder(bcryptPasswordEncoder());
    }
}
И контроллер
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

    @RequestMapping("/")
    public String start(){
        return "index";
    }

    @RequestMapping("/login")
    public String getLogin(@RequestParam(value = "error", required = false) String error,
                           @RequestParam(value = "login", required = false) String login,
                           Model model){
        model.addAttribute("error", error!=null);
        model.addAttribute("login", login!=null);
        return "login";
    }
}
И мой шаблон на thymekeaf

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>

    <link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>

    <title>HobNob.Authorization</title>
</head>
<body>
<div class="containerHB">

<h >HobNob</h>
</div>
<div class="container">
    <form th:action="@{/login.html}" method="post">
        <label for="username">Username</label>:
        <input type="text" id="username" name="username" autofocus="autofocus" placeholder="Username"/> <br />
        <label for="password">Password</label>:
        <input type="password" id="password" name="password" placeholder="Password"/> <br />
        <button type="submit">sub</button>
    </form>
</div>
</body>
</html>

Я не знаю что еще можно скинуть, ибо все остальное без кастомной формы работает

Ответ на: комментарий от nihirash

где именно можете подсказать как у компа окажетесь, буду очень признателен))

alexsandr753 ()

Больше всего меня смущает поле «имя пользователя».

На спринге никогда не писал, но кажется баг где то там, ну и урл.

nihirash ★★★ ()
Ответ на: комментарий от nihirash

не не, там повыше правильно сказали что .html лишнее, там в общем по умолчанию настройка идет такая, чтобы можно было передавать просто имя темплейта, а не весь путь и расширение, ну а я чот забыл про это

alexsandr753 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.