2011-09-08 1 views
0

바닐라 authlogic/cantango 설정은 테스트 중에 하드 코드 된 roles_list으로 테스트하여 [:user]을 반환합니다. 테스트 permissions.yml 파일 : 첫 번째 요청에처음 요청한 후 cancan/cantango 사용자/사용자 세션 및/또는 역할을 잃을 때

roles: 
    user: 
    can: 
     manage: 
     - User 

, user_can?(:manage, User) 내가 기대한다. 그러나 후속 요청에서, 그것은 더 이상 사실이 아니며, 나의 허가는 사라집니다.

current_usercurrent_user_session 바는 각 요청마다 바뀝니다. 그것이 내가 dev 환경에 있고, 무엇인가 다시로드되고 있기 때문에 그것이있는 지 명확히하지 않고있다. 그러나 그것은 나를 조금 밖으로 밑그림을 친다. Duh :/

ApplicationController의 구현은 기본 authlogic 예를 따릅니다.

나는 콘솔로드하는 경우 : 내가 cantango의 문서 당 cantango.rb에 (단지의 경우) cantango의 캐싱을 해제하려고 시도

pry(main)> u = User.first 
=> #<User id: 2, email: "[email protected]", [...] 
pry(main)> a = CanTango::Ability.new u 
=> [lots of stuff, available on request] 
pry(main)> a.can?(:manage, User.new) 
=> true 
pry(main)> a.can?(:manage, User.new) 
=> true 

[...]>

하나를 힌트/팁/포인터/소스/워드 프로세서?

+0

_ 추가 정보 : _ cantango는 현재'current_user' 메소드를 사용할 수 없다고 생각합니다. 그래서 guest 사용자를 호출합니다. 게스트 사용자는 여전히 같은 역할 목록을 반환하지만 원래 문제는 여전히 존재하지만 지금은 다른 문제가 있습니다. 이 질문을 묻는 과정은 지금까지 거꾸로 작동하고 있습니다. –

+0

_ 추가 정보 : _ 캐싱을 해제하는 캔 탱고 워드 프로세서가 올바르지 않습니다. 캐싱을 해제하면 게스트 사용자 역할이 작동합니다 (놀랍지도 않지만 실제로). 그러나 cantango는 여전히 응용 프로그램 컨트롤러의 current_user 도우미 메서드가 존재하지 않는다고 생각합니다. –

+0

_ 추가 정보 : _ 붙여 넣기의 위험; 내 응용 프로그램 컨트롤러의 도우미 메서드는 private이었습니다. 보호 대상으로 변경하면 문제가 해결됩니다. 이제 캔 탱고는 내 게스트 사용자를 인스턴스화하지 않습니다 (현재는 아니지만). –

답변

2

permissions.yml 파일을 다음과 같이 변경합니다 (이론적으로는 사용자가 아닌 역할이지만 게스트 역할은 사용하지 않습니다. 코드에서 아무 것도 참조하지 않는 경우 작동하지 않습니다). 주로 일합니다.

roles: 
    user: 
    can: 
     manage: 
     - User 
    guest: 
    cannot: 
     manage: 
     - User 

아직 캐싱을 해제해야합니다.

저는 캔통고를 지금 버리고 있습니다. 중요한 역할 기반 권한 요구 사항이 있지만 이로 인해 발생하는 문제의 양은 가치가 없으며 지금까지는 동일한 메타 기술 중 일부를 사용하는보다 타깃이 된 솔루션이 더 깨끗하고 쉽게 될 것으로 보입니다.

관련 문제