권한변경 관련 문의
- 작성자 :
- 최*규
- 작성일 :
- 2016-02-22 11:05:07
- 조회수 :
- 1,332
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
현재 해당 페이지의 등록/수정 권한을 사용자 권한에 맞춰 보여지게 하고 있습니다.
예를들어 ROLE_USER_LV1 은 준회원, ROLE_USER_LV2 는 정회원으로
ROLE_USER_LV2 의 경우에만 글을 쓸 수 있도록 하고 있습니다.
ex)
<sec:authorize ifAnyGranted="${boardMngVo.writeAuthorCode}">
<button class="submit" onclick="return insertBoard()"><spring:message code="button.write" /></button>
</sec:authorize>
회원가입시 ROLE_USER_LV1 의 권한을 부여하고, 이메일 인증 완료 후 ROLE_USER_LV2 의 권한을 주고 있습니다.
[롤 계층은 다음과 같습니다.]
IS_AUTHENTICATED_ANONYMOUSLY > IS_AUTHENTICATED_REMEMBERED > IS_AUTHENTICATED_FULLY > ROLE_USER_LV1 > ROLE_USER_LV2 > 등등등
그런데 만약 회원이 회원 가입 후 로그인을 하고, 이메일 인증을 하면 실제 DB의 COMTNEMPLYRSCRTYESTBS 테이블에는 ROLE_USER_LV2 로 변경되어지나, 로그인 되어있는 EgovUserDetailsHelper 의 getAuthorities() 를 조회해보면 ROLE_USER_LV1 까지만 조회돼고 있습니다.
이 뿐만이 아니고 관리자가 직접 사용자 권한을 수정하였을 경우도 마찬가지 입니다..
질문을 요약하자면.. 사용자의 권한 변경 후 재로그인 없이 스프링 시큐리티의 사용자 정보에 바로 반영할 수 있는 방법이 없나 하는 것입니다.
(EgovReloadableFilterInvocationSecurityMetadataSource 클래스의 reload() 를 이용해 봤지만 이 부분은 롤별 권한구조에 따른 접근에 대한 requestMap 재구성 정도인 것 같습니다.)
답변 부탁 드리겠습니다.
예를들어 ROLE_USER_LV1 은 준회원, ROLE_USER_LV2 는 정회원으로
ROLE_USER_LV2 의 경우에만 글을 쓸 수 있도록 하고 있습니다.
ex)
<sec:authorize ifAnyGranted="${boardMngVo.writeAuthorCode}">
<button class="submit" onclick="return insertBoard()"><spring:message code="button.write" /></button>
</sec:authorize>
회원가입시 ROLE_USER_LV1 의 권한을 부여하고, 이메일 인증 완료 후 ROLE_USER_LV2 의 권한을 주고 있습니다.
[롤 계층은 다음과 같습니다.]
IS_AUTHENTICATED_ANONYMOUSLY > IS_AUTHENTICATED_REMEMBERED > IS_AUTHENTICATED_FULLY > ROLE_USER_LV1 > ROLE_USER_LV2 > 등등등
그런데 만약 회원이 회원 가입 후 로그인을 하고, 이메일 인증을 하면 실제 DB의 COMTNEMPLYRSCRTYESTBS 테이블에는 ROLE_USER_LV2 로 변경되어지나, 로그인 되어있는 EgovUserDetailsHelper 의 getAuthorities() 를 조회해보면 ROLE_USER_LV1 까지만 조회돼고 있습니다.
이 뿐만이 아니고 관리자가 직접 사용자 권한을 수정하였을 경우도 마찬가지 입니다..
질문을 요약하자면.. 사용자의 권한 변경 후 재로그인 없이 스프링 시큐리티의 사용자 정보에 바로 반영할 수 있는 방법이 없나 하는 것입니다.
(EgovReloadableFilterInvocationSecurityMetadataSource 클래스의 reload() 를 이용해 봤지만 이 부분은 롤별 권한구조에 따른 접근에 대한 requestMap 재구성 정도인 것 같습니다.)
답변 부탁 드리겠습니다.
A
안녕하세요. 표준프레임워크센터입니다.
질문하신 내용을 확인해보니 각 유저들의 권한 갱신에 대해 문의하신 것 같습니다.
기본적으로 유저들의 정보는 스프링 시큐리티 기본설정의 경우 세션을 통해 관리되기 때문에 해당 부분의 경우 별도의 커스터마이징이 필요해 보입니다.
이메일 인증시 사용자의 인증을 새로 생성해서 설정을 하던지, 인증정보를 로드하는 부분을 커스터마이징을 통해 갱신하는 방법으로 처리해보시는 게 좋을 것 같습니다.
하단의 외부링크의 내용을 참조해보시고 커스터마이징을 해보시기 바랍니다.
ps.
ApplicationListener를 이용한 계정정보 변경반영
http://blog.naver.com/clotho95/140146456786
HttpSessionSecurityContextRepository를 커스터마이징 하여 변경
http://stackoverflow.com/questions/23072235/reload-userdetails-object-from-database-every-request-in-spring-security
질문하신 내용을 확인해보니 각 유저들의 권한 갱신에 대해 문의하신 것 같습니다.
기본적으로 유저들의 정보는 스프링 시큐리티 기본설정의 경우 세션을 통해 관리되기 때문에 해당 부분의 경우 별도의 커스터마이징이 필요해 보입니다.
이메일 인증시 사용자의 인증을 새로 생성해서 설정을 하던지, 인증정보를 로드하는 부분을 커스터마이징을 통해 갱신하는 방법으로 처리해보시는 게 좋을 것 같습니다.
하단의 외부링크의 내용을 참조해보시고 커스터마이징을 해보시기 바랍니다.
ps.
ApplicationListener를 이용한 계정정보 변경반영
http://blog.naver.com/clotho95/140146456786
HttpSessionSecurityContextRepository를 커스터마이징 하여 변경
http://stackoverflow.com/questions/23072235/reload-userdetails-object-from-database-every-request-in-spring-security