Spring Security에서 권한 체크 하기.
Spring2010. 3. 8. 09:46
음..
원래 하고 싶었던 건은(화면에 권한에 따라 보여질 뷰를 달리 하기 위해서)
<sec:authorize access="hasRole('ROLE_ADMIN') or ( '${bbs.username}' == principal.username)" />
이것을 적용하고 싶었지만
두껍게 한 부분을 .. 아마도
spEL 과 jstl EL 차이때문에 인식하지 못하고 에러를 뿜어 낸다.
그리하여,
위와 같은 코드가 탄생 -_-..
세션에 있는 authorities 정보에서 권한을 직접 비교하도록 하였다.
비교해서 있으면 true 없으면 false..
값에 따라서 화면에 보여질 것도 제어 할 수 있도록 하고,
스프링 시큐리티 보면서 도메인 ACL은 아직 손을 못대고 있는데..
이번달에는 꼭 할 수 있도록 해야겠다.
원래 하고 싶었던 건은(화면에 권한에 따라 보여질 뷰를 달리 하기 위해서)
<sec:authorize access="hasRole('ROLE_ADMIN') or ( '${bbs.username}' == principal.username)" />
이것을 적용하고 싶었지만
두껍게 한 부분을 .. 아마도
spEL 과 jstl EL 차이때문에 인식하지 못하고 에러를 뿜어 낸다.
그리하여,
Iterator iter = ((SecurityContext)session.getAttribute( "SPRING_SECURITY_CONTEXT")).getAuthentication().getAuthorities().iterator();
while ( iter.hasNext()) {
String role = ((GrantedAuthority) iter.next()).getAuthority();
if ( role.equals( "ROLE_ADMIN") || sessionUsername.equals( username)) {
returnFlag = true;
break;
}
}
while ( iter.hasNext()) {
String role = ((GrantedAuthority) iter.next()).getAuthority();
if ( role.equals( "ROLE_ADMIN") || sessionUsername.equals( username)) {
returnFlag = true;
break;
}
}
위와 같은 코드가 탄생 -_-..
세션에 있는 authorities 정보에서 권한을 직접 비교하도록 하였다.
비교해서 있으면 true 없으면 false..
값에 따라서 화면에 보여질 것도 제어 할 수 있도록 하고,
스프링 시큐리티 보면서 도메인 ACL은 아직 손을 못대고 있는데..
이번달에는 꼭 할 수 있도록 해야겠다.