2012-09-15 1 views
0

제목에서 말하자면, menu stored을 동적으로 생성하여 database에 트리를 만들고 거기에 인터페이스를 배치 할 계획이 있다는 것입니다. 이제는이 요구 사항에 적합한 시장에 기반하여 Access Control Layer을 구현하는 방법을 결정해야합니다.자바 보안 레이어 (Apache Shiro | 스프링 보안)를 웹 애플리케이션 메뉴 시스템에 통합하는 방법

저는 프로젝트에 Spring IoC, spring mvc 등을 많이 사용합니다. hibernate입니다. 나는 전에 apache shiro을 사용했고 그것은 나쁘지 않다. 지역 사회가 아직 젊기 때문에 시로에 관한 질문에 기여할만한 시간이 필요하고 광범위한 문서가 없다.

나는 아직도 어쨌든 shiro을 사용하여 기획되었다

나는 첫 번째 질문은 하고는 메뉴 시스템에 ACL을 묶어하는 것이 좋습니다해야 부탁해 spring security로하지 않는 경험을했습니다 때문에 | 네비게이션 시스템 누군가가 그 점에 관해 그의 경험을 공유 할 수 있다면 좋을 것입니다. 그래서 내 머리 위에 내가 마음 users, roles, rights, users_rights, roles_users이 모델이

,

users //contains creds and user detail 
roles //contains roles 
rights // contains rights (including menu entries matching rights, if i have to tie them) 
roles_users //many-to-many roles-users with extra columns mapped as entity 
roles_rights // many-to-many roles-rights with extra columns mapped as entity 

users_rights //many-to-many users-rights mapped as entity with extra columns. special rights for user and overwrite the overall rights given by roles. can deny rights given by a role or add rights not inside any roles 

roles_rights 그래서 권리 테이블에 내가 좋아하는 수 :

id 
    name // in the form of admin:users:list 
    description 
    menu_name // unique name what shows on page 
    menu_url 

유일한 질문은 내가 어떻게 하위 메뉴를 처리합니까? 자기 다 대 다 권리 권리? 결국 모든 것이 너무 복잡해진다. 나는 다른 관점, 통찰력, 제안을 원한다. 감사합니다

답변

1

나는 당신이 원하는 것을 이해하기를 바랍니다.
자기 외래 키를 사용하는 것이 유효하다고 생각합니다.
그러나 하위 메뉴를 만들거나 하위 메뉴 중 하나를 업데이트하면 하위 메뉴의 "ACL 값"을 계산하는 것이 좋습니다.
ACL을 확인하는 동안 하위 계산 시간을 낭비하지 않아도됩니다. 메뉴.
조건을 올바르게 사용하지 않으면 죄송합니다.
일반적으로 의미하는 바는 트리에 값이있는 경우이 값은 트리의 부모 노드 값에 따라 다를 수 있습니다 ,
삽입, 업데이트 또는 상위 노드 중 하나에서 변경하는 동안 하위 노드/리프 값을 계산해야합니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 그래서 아무 것도 구조에 문제가 없으며 acl + 메뉴를 어떻게 개념화합니까? –

+0

제 겸허 한 견해로는 괜찮습니다. –