We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WebRequestAuditorAware
createdBy
lastModifiedBy
memberId
workspaceMemberId
workspaceMember
workspaceCode
AuthorizationInterceptor
HttpServletRequest
request
AuditorAware
@Component @RequiredArgsConstructor public class WebRequestAuditorAware implements AuditorAware<Long> { private static final String WORKSPACE_API_PREFIX = "/api/v1/workspaces"; private final HttpSession session; private final HttpServletRequest request; @Override public Optional<Long> getCurrentAuditor() { String requestUri = request.getRequestURI(); // workspace API인 경우 workspaceMemberId 반환, workspaceMemberId가 null이면 넘어가기 if (requestUri.startsWith(WORKSPACE_API_PREFIX)) { Long workspaceMemberId = (Long)request.getAttribute( AuthorizationInterceptor.CURRENT_WORKSPACE_MEMBER_ID ); if (workspaceMemberId != null) { return Optional.of(workspaceMemberId); } } // 그 외의 경우 memberId 반환 return Optional.ofNullable( (Long)session.getAttribute(SessionAttributes.LOGIN_MEMBER_ID) ); } }
/api/v1/workspaces
CURRENT_WORKSPACE_MEMBER_ID
null
Optional.of(workspaceMemberId)
SessionAuditorAware
LOGIN_MEMBER_ID
Member
id
원래는 2개의 AuditorAware를 구현해서 사용하는 방법이 없나 찾아봤는데, 가능하지 않은 것 같다(참고: Allow having multiple AuditorAware(s)
URI에 대한 상수는 추후에 정리할 예정
The text was updated successfully, but these errors were encountered:
WorkspaceRequestAuditorAware
WorkspaceMember
Merge pull request #161 from seungki1011/feat/#159-workspacemember-au…
32a23d7
…ditor-aware Feat/#159 `WorkspaceMember`의 `id`를 기록하는 `WebRequestAuditorAware` 구현
seungki1011
No branches or pull requests
🚀 설명
createdBy
,lastModifiedBy
는 세션의 로그인 사용자의memberId
를 기록하는 방식으로 사용하고 있다workspaceMemberId
를 기록하는 것이 더 좋음workspaceMember
에서 각 워크스페이스에서 멤버의 권한, 별칭, 등을 관리하고 있기 때문!memberId
+workspaceCode
를 통해workspaceMember
를 조회할 수 있겠지만, 성능적으로 비효율적이라고 생각함💡아이디어
AuthorizationInterceptor
에서workspaceMemberId
를 반환하거나, 세션에 저장해서 사용하는 방식을 사용할 수는 없나?HttpServletRequest
의request
속성에 저장해서 사용하는 방법request
의 생명주기는 API 요청이 들어가고 응답을 받을때 까지 살아있음request
의 속성에서workspaceMemberId
를 저장하고 꺼내서 사용하는 방법은,AuditorAware
를 통해memberId
대신workspaceMemberId
를 저장해서 사용하는 것에 적용 가능 할 듯🤔 구현 방법
/api/v1/workspaces
으로 시작하면CURRENT_WORKSPACE_MEMBER_ID
를request
에서 꺼내서 확인null
이 아니면 바로Optional.of(workspaceMemberId)
를 반환하고, 해당 값을 생성자/수정자에 기록null
이라면 기존SessionAuditorAware
처럼 세션의LOGIN_MEMBER_ID
(Member
의id
)를 반환/api/v1/workspaces
으로 시작하는 요청이 아니거나,CURRENT_WORKSPACE_MEMBER_ID
가 없는 경우🤔 추가로
원래는 2개의
AuditorAware
를 구현해서 사용하는 방법이 없나 찾아봤는데, 가능하지 않은 것 같다(참고: Allow having multiple AuditorAware(s)URI에 대한 상수는 추후에 정리할 예정
✅ 작업 항목
WebRequestAuditorAware
를 구현🚩 관련 이슈, PR
📖 참고
The text was updated successfully, but these errors were encountered: