2017-04-27 5 views
0

현재 스프링 시큐어 플러그인을 구현 중이지만 권한 문제가있는 것 같습니다. 아래는 제 설정입니다. 액세스 권한이 있어야하는 리소스에 액세스 할 때 '이 주문에 액세스 할 수있는 권한이 없습니다.'라는 메시지가 나타납니다.권한이 없습니다 ... spring security shiro

도메인 클래스

class Permission { 

    Account user 
    String permission 

    static constraints = { 
     permission unique: 'user' 
    } 
} 

컨트롤러

if(!subject.isPermitted("todo:edit:${todo.id}")){ 
    flash.message = "You do not have permission to access this order..." 
    forward(controller:'todo', action:'list') 
    return 
} 

부트 스트래핑 데이터

account.addToPermissions("todo:save") 
account.addToPermissions("todo:edit:" + todo.id) 
account.addToPermissions("todo:update:" + todo.id) 
account.addToPermissions("todo:remove:" + todo.id) 
account.save(flush:true) 

권한 MA tch up, 그러나 hickup이 어디에 있는지 확실하지 않습니다. isPermitted은 문제없이 작동합니다.

모든 안내가 가장 높이 평가됩니다.

미리 도움을 주셔서 감사합니다.

감사합니다.

답변

0

사용자 클래스에는 Permission 객체의 hasMany가 있어야합니다. 이전 버전에서는 사용자 클래스에 hasMany 권한 String이있었습니다. 또한 Permission 도메인 클래스에서 제약 조건 부분을 제거해야했습니다.

class Account{ 
    static hasMany = [ permissions: Permission ] 
} 


class Permission { 

    Account user 
    String permission 

    static constraints = { 
    } 
}