You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
한 회원은 A프로젝트에서는 PM(프로젝트 매니저)이고, B프로젝트에서는 PL(프로젝트 리더)일 수 있다. 그러나 단순히 회원에게 ROLE을 부여하게 되면 PM이라는 권한을 B프로젝트에서도 행사할 수 있게 되는 문제가 발생한다.
해결 시도
Spring Security의 @PreAuthorize() 활용: 메소드별로 권한 확인을 위해 Spring Security에서 제공하는 @PreAuthorize()를 사용하려고 했다. 그러나 Spring Security 6 부터는 구현 방식이 변경되어 사용하기 어려웠다.
Servlet Filter 기능 활용: 클라이언트에서 요청이 들어오면 Filter를 통해 권한 체크를 할 생각이었다. 그러나 Filter에서는 Spring Bean 객체를 확인할 수 없어서 이를 이용한 방법이 어려웠다.
Spring Security의 RequestMatcher를 Custom 개발: 클라이언트에 프로젝트 ID를 저장해놓고 요청할 때마다 현재 작업 중인 ProjectId를 헤더를 통해 받는 식으로 생각했다. 그러나 이 방법보다는 DB에서 권한 관리를 하는 것이 더 좋을 것으로 보인다는 조언을 받았다.
최종 선택
강사님의 조언을 받아들여 DB에서 권한을 관리하는 방식을 선택했다. 이미 우리 DB에서 관리되고 있는 '역할'과 'PL권한' 테이블이 있으며, 이 두 테이블을 한 테이블로 합쳐 관리할 수 있을 것으로 보인다. 따라서 AOP를 이용하여 권한 체크를 하는 방식으로 변경하여 개발할 예정이다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
배경
한 회원은 A프로젝트에서는 PM(프로젝트 매니저)이고, B프로젝트에서는 PL(프로젝트 리더)일 수 있다. 그러나 단순히 회원에게 ROLE을 부여하게 되면 PM이라는 권한을 B프로젝트에서도 행사할 수 있게 되는 문제가 발생한다.
해결 시도
Spring Security의
@PreAuthorize()
활용: 메소드별로 권한 확인을 위해 Spring Security에서 제공하는@PreAuthorize()
를 사용하려고 했다. 그러나 Spring Security 6 부터는 구현 방식이 변경되어 사용하기 어려웠다.Servlet Filter 기능 활용: 클라이언트에서 요청이 들어오면 Filter를 통해 권한 체크를 할 생각이었다. 그러나 Filter에서는 Spring Bean 객체를 확인할 수 없어서 이를 이용한 방법이 어려웠다.
Spring Security의 RequestMatcher를 Custom 개발: 클라이언트에 프로젝트 ID를 저장해놓고 요청할 때마다 현재 작업 중인 ProjectId를 헤더를 통해 받는 식으로 생각했다. 그러나 이 방법보다는 DB에서 권한 관리를 하는 것이 더 좋을 것으로 보인다는 조언을 받았다.
최종 선택
강사님의 조언을 받아들여 DB에서 권한을 관리하는 방식을 선택했다. 이미 우리 DB에서 관리되고 있는 '역할'과 'PL권한' 테이블이 있으며, 이 두 테이블을 한 테이블로 합쳐 관리할 수 있을 것으로 보인다. 따라서 AOP를 이용하여 권한 체크를 하는 방식으로 변경하여 개발할 예정이다.
Beta Was this translation helpful? Give feedback.
All reactions