Romanov1981
@Romanov1981

Почему не работает @PreAuthorize?

Приветствую уважаемые форумчане.

Скажите пожалуйста, почему не работает @PreAuthorize? Ни каких исключений и ошибок не выдаёт, просто не работает и всё. Весь Интернет уже перерыл, перепробовал, а он не работает.

На всякий случай залил на github https://github.com/romanych2021/TestPreAuthorize

SecurityConfig.java

package com.testpreauthorize.security;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
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.core.userdetails.UserDetailsService;

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {




    @Autowired
    UserDetailsService userDetailsService;


    @Autowired
    protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }





    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest()
                .permitAll()


                .and()
                .formLogin()
                .loginPage("/login")
                .loginProcessingUrl("/login")

                .defaultSuccessUrl("/")

                .and()

                .logout()
                .permitAll()
                .logoutUrl("/logout")
                .logoutSuccessUrl("/")

                .invalidateHttpSession(true)
                .deleteCookies("JSESSIONID")
                .and()
                .csrf().disable();

    }


}


HomeController.java

package com.testpreauthorize.controller;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class HomeController {

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


    @PreAuthorize("isAuthenticated()")
    @GetMapping(value = "/user")
    public String user () {
        return "/user";

    }


    @GetMapping(value = "/login")
    public String loginGet () {
        return "/login";
    }

    @PostMapping(value = "/login")
    public String loginPost () {
        return "redirect:/user";
    }


}
  • Вопрос задан
  • 489 просмотров
Решения вопроса 1
Romanov1981
@Romanov1981 Автор вопроса
Тема закрыта, исправил.
Решение было такое: я этот - @EnableGlobalMethodSecurity(prePostEnabled = true) переместил в конфигурационный файл приложения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы