2014-05-22 7 views
0

이 개 역할 1) ROLE_USER1 2) ROLE_USER2스프링 MVC 주석 및 보안 구성

나는 내가 만들 수있는 경우, 사용자 모듈 관리가 스프링 security.xml 예에서 모든 URI를 추가하려는 해달라고

가있다 업데이트, 삭제 및 읽기 사용자 컨트롤러라는 하나의 컨트롤러가 있습니다. 해당 컨트롤러에 매핑 내가 secruity.xml

그리고 ROLE_USER2에 ROLE_USER1 역할에 대해 "생성/사용자"URI를 추가해야이 경우에, 그래서 "사용자가 생성 /"나는 단지 액세스 ROLE_USER1을 원하는

@RequestMapping (value="user/create") 
@RequestMapping (value="user/list") 
@RequestMapping (value="user/update") 
@RequestMapping (value="user/delete") 

입니다 이 경우에는 security.xml에 ROLE_USER2에 2 개의 URI를 추가해야합니다.

나는 이것이/URL에 관리자를 항상 줄 것입니다. 관리자 역할에 액세스 할 수 있음

및 SuperAdmin URL에 대해/

최고 관리자

를 포함 그리고 난 그냥 포기해야 할 것이다/관리/** 및 /에게 superAdmin/** 스프링 security.xml에서

하지만위한 컨트롤러에서 여러 매핑을 추가해야 위의 시나리오를 달성하기 위해 단일 액션. 여러 동작을 추가하면 Jsp Action 문제가 발생합니다. 즉이있을 수 있습니다 중 하나 "/ 관리자/사용자/생성"또는

내가 Spring.security.xml

감사

+0

왜 2 개의 URL이 필요한가요?! 'admin/user/create /'URL 또는 더 나은'/ user/create' URL은 Spring Security에 의해 보호되어야하며 어느 역할에 대해서만 액세스를 허용해야합니다. 보안을 위해 URI를 모두 추가하고 싶지는 않습니다. –

+0

예 .. 예 저는 사용자와 관련된 모든 작업이 작성된 UserCOntroller를 만들었습니다. 그래서보기 사용자 만 액세스 할 수있게하려면 보안 파일에 모든 URI를 추가해야합니다. 나는 보안 파일에 각 URI를 추가하고 싶지 않다. –

+0

나는 당신이 원하는 것을 이해하지 못한다. 스프링 보안에서'/ admin/user/create'를 보호하십시오. http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#authorize-requests –

답변

0

I에서 URL의 최소 항목이 확보 할 "/에게 superAdmin/사용자/생성" 관리자 및 수퍼 관리자 용으로 새 컨트롤러를 만들어야한다고 생각하지 마십시오.

대신 security.xml의 URL에 역할을 추가해야합니다. 예를 들어 현재 security.xml 구성이 아래와 같습니다.

<intercept-url pattern="/user/create" access="hasAnyRole('ROLE_USER1')" />  
    <intercept-url pattern="/user/delete" access="hasAnyRole('ROLE_USER2')" /> 

아래와 같이 admin 및 superadmin 역할을 추가하기 만하면됩니다.

<intercept-url pattern="/user/create" access="hasAnyRole('ROLE_USER1', 'SuperAdmin', 'Admin')" />  
    <intercept-url pattern="/user/delete" access="hasAnyRole('ROLE_USER2', 'SuperAdmin', 'Admin')" /> 

다른 역할에 대한 특별한 논리가있는 경우 Java 코드에서 아래와 같이 현재 역할에 액세스하여 논리를 전환 할 수 있습니다.

SecurityContextHolder.getContext().getAuthentication().getAuthorities();