2010-02-05 3 views
0

Shiro 플러그인을 사용하여 Grails 애플리케이션의 일부 페이지 만 보안 설정하는 방법을 이해하는 데 어려움이 있습니다.Shiro 플러그인을 사용하여 Grails 애플리케이션의 일부 페이지 만 보안 설정

class SecurityFilters { 
    def filters = { 
    all(uri: "/**") { 
     before = { 
     // Ignore direct views (e.g. the default main index page). 
     if (!controllerName) return true 

     // Access control by convention. 
     accessControl (auth:false) 
     } 
    } 
    } 
} 

나는 내 부트 스트랩에서 사용자를 만들었습니다 :

내 보안 필터에서 이것을 사용

 
    def adminRole = new Role(name: "Administrator") 
    adminRole.addToPermissions("secured1") 
    adminRole.addToPermissions("secured2:create,save,edit,update") 
    adminRole.save() 

    def user = new User(username: "admin", passwordHash: new Sha512Hash("***").toHex()) 
    user.addToRoles Role.findByName('Administrator') 
    user.save() 

을하고 그것을 작동합니다. 문제는 모든 컨트롤러/동작을 보호한다는 것입니다.

내 SecurityFilter에서 보호하려는 동작을 지정하지 않을 수도 있지만 사용 권한에서만 지정 가능합니다.하지만 가능합니까?

답변

1

정적 속성 'filter'를 사용하면 여러 필터링 패턴을 정의 할 수 있습니다. 'uri'매개 변수 또는 'controller'매개 변수를 사용할 수 있습니다. '컨트롤러'를 사용하는 경우 '액션'매개 변수를 추가 할 수도 있습니다. 추가 정보를 알아 http://www.grails.org/Filters

admin(uri:"/admin/**") 
... 
browseStore(controller:"store", action:"(show|list)") 
... 
shopStore(controller:"store", action:"*") 
... 

확인 : 당신이 좋아하는 물건을 할 수 있도록 이러한 매개 변수의 각각은 정규 표현식을합니다.

+0

사실,하지만 내 생각에 그 역할에 대한 addToPermissions에서 정의 할 수 있었기 때문에 SecurityFilter에서이를 수행 할 필요가 없었습니다. 하지만 귀하의 입력에 감사드립니다 – sbglasius

+0

필터는 액세스 제어가 이루어지는 곳입니다. 권한을 만들어 액세스 제어를 적용 할 수있는 마법이 있다면 공유하십시오. 여기에 와일드 카드 사용 권한에 대한 설명이 나와 있습니다. http://www.grails.org/plugin/shiro 와일드 카드 사용 권한은 MVC에서 사용하는 controller : action : id 레이아웃과 비슷하게 보일 수 있습니다. grails shiro plugin을 사용할 때이 둘 사이에는 관계가 없습니다. – Brandon

+0

안녕하세요, Brandon : SecurityFilters가 필요하다는 것을 알고 있지만, 몇 가지를 쓰고 싶지는 않습니다. 그 중 하나만 사용하고 사용자 및 역할 테이블에서 나머지 권한을 처리하십시오. – sbglasius