지라 클론코딩 하고 있음..
지라 구조가 카카오톡 오픈 채팅방처럼 방마다 멤버도 다르고 권한도 다르잖아(어느방에선 관리자지만 어느 방에선 멤버)
그래서 단순한 구조가 아니라
1. A프로젝트에 있는 유저가 아닌데 A프로젝트에 들어가면 전부 403에러를 내뱉는 로직이랑
2. A프로젝트에 있는 글을 삭제하려면(delete권한) 관리자만 가능하게.......
솔직히 2번정도야 그냥 컨트롤러로 들어온 서비스에서 대충 처리해주면 되니깐 상관 없는데
1번은 모든 서비스에 일일히 권한 확인 할 생각하니깐 어지러워져서..
스프링 시큐리티 잘 커스텀 하면 가능한 부분? 아니면 그래도 힘들어?
그냥 계속 삽질하고 있는데 불가능 한거면 다른거나 더 만들게
?? 접속하려는 프로젝트 접근 권한 이후에 나머지 할 수 있는 영역이 결정되는 방식으로 짜놓으면 되지 않음? 현존하는 모든 프로젝트에 대한 권한을 점검하는 형식을 취하려는 이유가 어떻게 됨?
걍 주소창 입력해서 들어갈 수도 있자너
주소창에 입력해서 들어가는 프로젝트도 결국에는 한 개의 프로젝트고 그 프로젝트에 대한 권한만 AOP를 쓰든 시큐리티를 쓰든 먼저 스크리닝하면 되는 끝나는 거 아닐까?
AOP나 시큐리티가 제공하는 기능 중에 요청, 응답 사이에 무조건 실행되게 하는 로직을 간단하게 심을 수 있게 되어 있는 걸로 아는데 그럼 url을 치든, 기능을 이용하든 같은 로직을 항상 타게 할 수 있다는 거 아님?
그니깐 한 사이트에 오픈톡마냥 여러 프로젝트가 있고, a라는 유저는 1프로젝트의 관리자임에 동시에 2프로젝트의 팀원일 수 있음
그럼 1프로젝트는 http:어쩌구/1/board 머 이런식일테고 2프로젝트는 http:어쩌구/2/board 이런식이겠지
근데 스프링 시큐리티에서 1번 2번케이스 따로 권한주는게 가능해?
접속하고자 하는 url(기능이든, url이든) => 해당 프로젝트가 어떤 프로젝튼지 식별하는 코드 , 즉 모든 프로젝트를 찾을 필요는 없다는 뜻. 해당 프로젝트에 요청하는 클라이언트 정보와 비교 => 권한 체크 결과 짜잔!
자세한 건 모름. 나도 스프링 시큐리티는 안써봐서... 기존에 AOP 구현 할 때 위에 적은 거 처럼 한 기억만 있어.
aop다 좋은데 그거 컨트롤러 오기전에 인터셉트해서 body내용이나 url 주소 뜯어볼수있나? 그럼 굳이 컨트롤러에서 파라미터 안받고 aop로 처리하믄 되긴 하것네
웅 그거 될 거야.
지금쓰는건 컨트롤러에서 http:/어쩌구/{projectNo}/board 이렇게 파라미터를 받았었음
쨌든 아침부터 ㄱㅅㄱㄱㅅ
In Spring Security, you can use the @PreAuthorize and @PostAuthorize annotations to define access control expressions that determine whether a user is authorized to access a particular method or not. The expressions can include the user's authorities, which are assigned to them based on their role.
For example, you can use the hasRole() method to check if the user has a specific role, and use logical operators such as and, or, and not to combine multiple expressions. You can also use the @RolesAllowed annotation to specify the roles that are allowed to access a method.
Additionally, you can also use custom AccessDecisionVoters and RoleHierarchy to have more fine grained control over the access.
AccessDecisionVoters 조금 더 쳐보니 옆에 이 어노테이션 다루는 방법을 찾아보면 해답이 나올 거 같긴 해. AI 똑똑하네 진짜...
ㅇㅇ 가능함. 스프링 시큐리티라는 것 자체가 인증 / 인가를 구현하는 프레임 워크임. 인증이란 본인이 접근하는지를 증명하는 과정이고, 인가는 인증이 끝난 상대의 권한을 체크해서 리소스 접근 여부를 통제하는 것임
그래서 시큐리티 써보면 알겠지만 권한에 따라서 접근 가능한 url 분리해놓을 수 있음. 또 본인 글이나 댓글을 본인만 삭제하는 것 / 관리자만 삭제하는 것도 위에 게이가 써준 것 처럼 @PreAuthorize 어노테이션을 컨트롤러(핸들러) 메소드들 위에 선언해서 쓸 수 있도록 지원함