도메인 설정이 완료 되었다면 접근 권한도 설정 해줘야죠?

개발자·2022년 11월 30일
0
  • ViewController에서 각 CRUD 요청에 대한 도메인 설정이 완료 되었다면?
    • 아래와 같이 각 CRUD에 대한 매핑을 마쳤다면 특정 페이지는 권한 부여 없이도 접근이 가능하겠지만,

    • 개인정보나 중요한 메시지가 담긴 페이지들에 대해서는 권한을 갖고 있는 사용자만 접근이 가능하도록 설정을 해주어야 한다.

      package com.hansol.photogramstart;
      
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.GetMapping;
      
      @Controller
      public class ViewControllerTest {
      
         @GetMapping("/auth/signup")
         public String signupPage() {
            return "auth/signup";
         }
      
         @GetMapping("/auth/signin")
         public String signinPage() {
            return "auth/signin";
         }
      
         @GetMapping("/image/story")
         public String storyPage() {
            return "image/story";
         }
      
         @GetMapping("/image/popular")
         public String popularPage() {
            return "image/popular";
         }
      
         @GetMapping("/image/upload")
         public String uploadPage() {
            return "image/upload";
         }
      
         @GetMapping("/user/profile")
         public String profilePage() {
            return "user/profile";
         }
      
         @GetMapping("/user/update")
         public String updatePage() {
            return "user/update";
         }
      }
      
  • Security Config 설정하기
    • 먼저 @Configuration를 통해 Config 파일이라는 것을 IoC에 등록해준다.

    • 그리고 @EnableWebSecurity 어테이션으로 해당 파일로 시큐리티를 활성화 할 것임을 알려준다.

    • 이후 Security Config와 관련된 설정들을 커스터마이징 해준다.

      package com.hansol.photogramstart.config;
      
      import org.springframework.context.annotation.Configuration;
      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;
      
      @EnableWebSecurity //해당 파일로 시큐리티를 활성화
      @Configuration //IoC 등록
      public class SecurityConfig extends WebSecurityConfigurerAdapter {
          @Override
          protected void configure(HttpSecurity http) throws Exception {
              //super.configure(http);
              //super.configure(http)를 삭제하면, 기존 시큐리티가 가지고 있던 기능이 모두 비활성화 됨
              http.authorizeRequests()
                      .antMatchers("/", "/user/**", "/image/**", "/subscribe/**", "/comment/**").authenticated()
                      .anyRequest().permitAll()
                      .and()
                      .formLogin()
                      .loginPage("/auth/signin")
                      .defaultSuccessUrl("/");
              // "/", "/user/**", "/image/**", "/subscribe/**", "/comment/**"와 같은 요청이 왔을 경우에는 인증이 필요함.
              // 그 이외의 요청에 대해서는 모두 권한 없이도 접근이 가능하도록 설정.
              // 접근이 필요한 페이지에 대해서 접근을 요청할 경우, 접근 권한이 없다면 로그인 페이지를 보여주어 권한을 갖도록 유도함.
          }
      }
      
profile
I DEVELOP THEREFORE, I AM 😄

0개의 댓글