[스프링 시큐리티] 시큐리티 권한 처리

코린이서현이·2024년 6월 9일
0
post-thumbnail

들어가면서

너무 오랜만에 해서 기억도 안난다..;; 
서현아 제발 이러지마...ㅜㅜ
이번주 목요일까지 이 강의 완강하고 혼자서 해보는게 목표다!!

이유 : 진짜 졸작해야함.. 개 조짐

시험기간 끝나기 전까지는 데이터 베이스 띄워놔야함.. ㄹㅇ 개조짐.. 
무한참조 하나도 기억안남;; 개조짐

시큐리티 권한을 줘보자

권한이 없으면 접근이 불가능한 곳이 있다.

물론 기억도 안나겠지만..? ^^

이런 코드가 있었다. 요 코드는 권한에 따라 접근이 가능하도록 하는 코드였다. 해당 사이트로 접속해보자!


분명 나는 만들었지만 접속할 수 없는 것을 확인할 수 있다.


유저페이지는 잘 들어감

(테스트용으로) 강제로 권한을 줘볼까?

데이터베이스 쿼리문으로 해보기..


권한 변경 잘 했는데 왜 안되냐..?

어... 뭐지.... sql에서 권한을 그냥 "ADMIN" 이 아니고 "ROLE_ADMIN"으로 하니까 됌.. 이게 왜 되는 거지

이게 되는 이유 보러가기 👉 ??

@EnableGlobalMethodSecurity를 추가하라는데...?

securityConfig클래스에 어노테이션을 추가하자..?
그런데 이게 뭔데요ㅜ

클래스 추가 코드

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class MySecurityConfig {

이 어노테이션은 @Secured을 사용할 수 있게 만들어준다!

컨트롤러 해당 메서드 추가

@Controller
public class IndexController {
....

    @Secured("ROLE_ADMIN")
    @GetMapping("/info")
    public @ResponseBody String info() {
        return "개인정보";
    }
}

이제는 들어가지 않는다!!

@EnableGlobalMethodSecurity의 속성들

(securedEnabled = true)

  • @Secured() 사용을 가능하게 해준다.
  • 간단하게 메서드의 권한을 설정할 수 있다.

(prePostEnabled = true)

  • 메서드 시작 전 권한 검사하기
    -> @PostAuthorize()@PreAuthorize사용을 가능하게 해준다.
    @PreAuthorize("hasRole('ROLE_MANAGER') or hasRole('ROLE_MANAGER')")
    //여러개 가능
    @GetMapping("/data")
    public @ResponseBody String data() {
        return "개인정보";
    }

🤔 그런데 그냥 한 곳에서 해..
여기저기서 하면 안된다.

마무리하면서

음..? 근데 자바로직으로 짜야지요!!
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글