2012-02-29 6 views
1

내 관리 사용자가 계정의 표준 사용자가 수행 할 수있는 거의 모든 작업을 제어 할 수있게하고 싶습니다. 관리를위한 그룹 권한을 만들 때 100 개가 넘는 행을 가진 거대한 테이블을 갖는 것이 더 좋습니까? 아니면 데이터베이스의 텍스트 필드에 저장된 해시에 모든 권한을 저장하는 것이 더 좋습니까? 그들이 할 수없는 일만 저장할 것인가? 또는 그들이 할 수있는 일은 무엇입니까? (가장 작은 목록 중 가장 작은 것)내 레일 앱에서 그룹 권한을 구현하고 싶습니다. 가장 효율적인 방법은 무엇입니까?

웹 응용 프로그램에서이 작업을 수행하는 표준 방법이 있습니까? 내가 저장했던 것과의

몇 가지 예 :

can_delete_object?
can_edit_object?
can_create_object?
can_delete_minions_object?
can_delete_managers_object?

나는 정말 can_을 좋아합니까? can-can 사용할 수있는 구문. Can-can은 일을하기위한 함수를 정의하는 것 이외의 것이라면 위대 할 것입니다. 난 아직도 이러한 모든 불리언을 저장 이외에 일을 끝낼 수도 있습니다 .. 그룹 수준의 권한을 무시하는 계정 수준의 권한이 있기 때문에.

답변

0

사용 권한이 정확히 무엇인지에 따라 CanCan과 같은 것이 될 수 있습니까?

https://github.com/ryanb/cancan

당신은 다른 권한의 일부를 설명 할 수 있을까?

+0

저는 cancan을 보았습니다. 그리고 그것은 DB 기반이 아닙니다. 그것은 모든 메소드에 있습니다 ... 그리고 결국에는 많은 메소드를 사용할 필요가 있습니다. 그래서 이것을 볼 수도 있습니다 ...하지만 당신의 메소드에서 많은 메소드를 정의하는 것과 똑같은 것으로 보입니다. lib 폴더에 있습니다. 몇 가지 예를 추가하겠습니다. – NullVoxPopuli

1

[편집] - 코드가 분명 조금

내가 권한 그룹의 어떤 종류가 있는지 당신이 정말로 다시 캉캉을 확인해야한다고 생각 (즉, 유사한 권한을 가진 관리자, 부하에 그룹 사용자 ... 그리고

class Ability 
    include CanCan::Ability 

    def initialize(user) 

    # All registered users can edit their own objects 
    can :manage, [Object], :user_id => user.id 

    # Different roles 
    if user.moderator? 
     can :delete, [Object], :user_id => user.minion.id 
    elsif user.admin? 
     can :delete, [Object], :user_id => user.manager.id 
    end 
    end 
end 
+0

나는 이것을 좋아하지만 궁극적으로 계정의 관리자는 자신의 계정에있는 gorup에 대한 권한을 사용자 정의 할 수 있습니다. – NullVoxPopuli

1

Here 루비 인증 GE의 좋은 목록입니다 단지를 heres DB 대신 능력의 전체 해시)

할 수있는 기능 클래스가 현재 상황에서의 모양에 대한 예제가 해당 필드를 저장 ms.

필자는 CanCan과 acl9를 깊이 사용하고 다른 여러 가지를 검토했습니다. 나는 CanCan 사용에 대한 권고에 동의하지만 사용자, 역할 및 그룹 할당 권한 관리를 요구하는 복잡한 응용 프로그램에서 acl9 gem과 함께 성공을 거두었습니다.

+0

내가 보석과 함께 가지고있는 가장 큰 문제는 내 관리자가 권한을 맞춤 설정할 수 있도록 허용해야한다는 것입니다. 그래도 좋은 목록. – NullVoxPopuli

+0

아, 알겠습니다. 관리자가 해당 권한을 제어 할 수있는 작업에 사용자 지정 권한을 매핑 한 Rails 응용 프로그램을 개발했습니다. 그러나 우리는이 기능을 지원하고 아무것도 찾을 수없는 보석을 찾으려고 무거운 조사를했습니다. https://github.com/berkmancenter/zone1은 repo입니다. –