Метод GET не поддерживается, показывает после входа в систему, как решить эту проблему? - PullRequest
1 голос
/ 13 мая 2019

Я работаю в системе администрирования, у меня есть HomeController.java:

@Controller
public class HomeController {


    @Autowired
    private UserRepository userRepository;
    @Autowired
    private UserService userService;


    @GetMapping("/")
    public String root() {
        return "/home";
    }


    @GetMapping("/home")
    public String home() {
        return "/home";
    }


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

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


    @GetMapping("/profile")
    public String currentUser(@ModelAttribute("user") @Valid UserDto userDto, BindingResult result, Model model) {

        Authentication loggedInUser = SecurityContextHolder.getContext().getAuthentication();
        String email = loggedInUser.getName();


        User user = userRepository.findByEmail(email);
        String firstName = user.getFirstName();
        model.addAttribute("firstName", firstName);
        model.addAttribute("email", email);


        return "profile";

    }

, когда я пытаюсь войти в систему с неверными учетными данными, все работает нормально и выдает неверный пароль или имя пользователя. Проблема в том, что когда я ввожу правильные учетные данные, я получаю эту страницу:

enter image description here

Вот SecurityConfig.java:

@Configuration

public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Autowired
    private UserService userService;


    @Autowired
    private UserRepository userRepository;


    @Override
    protected void configure(final HttpSecurity http) throws Exception {
        // @formatter:off


        http
                .authorizeRequests()
                .antMatchers(
                        "/"
                        , "/home"
                        , "/registration"
                        , "/forgot-password/"
                        , "/reset-password/"
                        , "/welcome"
                        , "/js/**"
                        , "/css/**"
                        , "/img/**"
                        , "/webjars/**"


                )
                .permitAll()

                .and()
                .authorizeRequests()
                .antMatchers("/admin/**").hasRole("ADMIN")
                .antMatchers("/super/**").hasRole("SUPER")
                .antMatchers("/partner/**").hasRole("PARTNER")
                .anyRequest()
                .authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/index" , true)
                .permitAll()
                .and()
                .logout()
                .invalidateHttpSession(true)
                .clearAuthentication(true)
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/login?logout")
                .permitAll()
                .and()
                .rememberMe()
                .and()
                .rememberMe()
                .key("uniqueAndSecret")
                .userDetailsService(userService);

    }


    //Beans
    @Bean
    public PasswordEncoder encoder() {
        return new BCryptPasswordEncoder(11);
    }

    @Bean
    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider auth = new DaoAuthenticationProvider();
        auth.setUserDetailsService(userService);
        auth.setPasswordEncoder(encoder());
        return auth;
    }


    @Bean
    public AuthenticationManager customAuthenticationManager() throws Exception {
        return authenticationManager();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider());
    }
}

enter image description here

1 Ответ

0 голосов
/ 13 мая 2019

Здесь:

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

вы перенаправляете на индекс (без расширения .html), но для index url нет сопоставления. Таким образом, вы можете изменить его на: return "/index.html";

, если у вас есть index.html файл в статическом каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...