지난 번에는 환경설정 이후 로그인 화면이 뜨는 것까지 확인하였다.
http://localhost:8080/logout
위 url을 입력하면 따로 메서드를 만들지 않았지만 로그아웃이 이뤄진다.
@Controller
public class IndexController {
@GetMapping({"", "/"})
public String index() {
// 머스테치 기본폴더 src/main/resources
// 뷰리졸버 설정 : templates (prefix), .mustache (suffix) 생략가능!!
return "index"; // src/main/resources/tamplates/index.mustache
}
@GetMapping("/user")
@ResponseBody
public String user() {
return "user";
}
@GetMapping("/manager")
@ResponseBody
public String manager() {
return "manager";
}
@GetMapping("/admin")
@ResponseBody
public String admin() {
return "admin";
}
// 스프링 시큐리티가 주소를 낚아채버림 - Security Config 파일 생성 후 작동 안함
@GetMapping("/login")
@ResponseBody
public String login() {
return "login";
}
@GetMapping("/join")
@ResponseBody
public String join() {
return "join";
}
@GetMapping("/joinProc")
@ResponseBody
public String joinProc() {
return "회원가입 완료됨!";
}
}
@Configuration
@EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록이 됨
public class SecurityConfig{
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/user/**").authenticated()
.antMatchers("/manager/**").access("hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')")
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().permitAll()
.and()
.formLogin()
.loginPage("/login");
return http.build();
}
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/user/**").authenticated()
.antMatchers("/manager/**").access("hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')")
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().permitAll()
// 추가
.and()
.formLogin()
.loginPage("/login");
return http.build();
}
http://localhost:8080/user
http://localhost:8080/manager
http://localhost:8080/admin