칸칸과 유전 자원
4783 단어 cancan
묘사
안녕, 리안,CanCan을 상속된 리소스로 사용하려고 했지만 "load resource"대신 "authorize resource"를 단독으로 사용하는 동안 문제가 발생했습니다.
이 방법은 최종적으로 실례 변수 @model에 의존하지만, 계승된 자원을 사용할 때, '자원' 조수 (마운트 지연) 를 호출할 때까지 이 변수를 설정합니다.작업을 수행하는 방법은 자원 조수로부터 그것을 얻는 것이다.
"authorize resource"에 param/옵션을 추가하면 자원을 가져오는 대체 정책을 결정할 수 있습니다. 이 옵션은 어떻습니까?
감사합니다,
Marcelo Silveira
토론 #1
에는 다른 자원 로드 유틸리티(예를 들어make_resourceful
도 많이 있습니다. 이상적인 상황에서 이런 도구도 지원되어야 합니다.타성 로드 방법은 확실히 그 중 일부 사람들이 사용하는 유행하는 방법인 것 같아서, 나는 이것이 절대로 추가할 가치가 있다고 생각한다.사
:accessor_method
어때요?authorize_resource :accessor_method => :item
Any suggestions for an alternative name?
토론 #2
I'm not a fan of this name but couldn't think of anything better. =)
Would you be interested in a patch?
Happy new year!
토론 #셋
On my app I just extended InheritedResource with the following code:
def authorized?
unauthorized! if cannot?(params[:action].to_sym, asset)
end
def asset
@asset ||= case params[:action].to_sym
when :index
resource_class
when :new, :create
build_resource
else
resource || resource_class
end
end
그리고 before 필터 하나만 할게요: 권한 부여?만약 당신이 계승된 자원을 사용한다면 정상적으로 일을 할 수 있기 때문에 나는 이런 방법을 좋아한다.만약 흥미가 있다면, 나는 갈라져서 패치를 추가할 것이다.
토론 #4
헤이@hexorx, 깨우쳐 줘서 고마워요.그것은 칸칸을 즉시 IR와 함께 일하게 했다. 이것은 매우 좋다.최종 해결 방안에 따라 나는 라이언의 건의에 따라 할 것이다.
건배!
토론 #5
일부 연구를 통해 ControllerResource::model 실례에서 이 옵션을 처리할 수 있을 것 같습니다.그러나accessor 방법을 호출하려면 Resource Authorization과 같은collection 작업과 new 작업에 대한 검사를 해야 적당한 때accessor를 호출할 수 있습니다.
나는 계속하기 전에 이 방법을 검증하는 것이 좋은 생각이라고 생각한다.
건의
토론 #6
@hexorx,감사합니다.IH와 함께 사용할 때 같은 오류로 인해 CanCan을 떠나려고 합니다.하지만 해커 기술은 나에게도 효과가 있다.나는 단지 Can Can과 IH의 결합을 좋아할 뿐이다.
토론 #7
해커 공격을 보고 나는 이 문제가 내가 처음 생각했던 것보다 더 복잡하다는 것을 깨달았다.액세서리 방법이 서로 다른 상태(새로운, 기존 등)의 대상을 되돌릴 수 있을 뿐만 아니라 자원 구축에 도움을 줄 수 있는 여러 가지 방법도 있다.따라서, 나는 간단한 옵션이 부족하다고 생각한다. 왜냐하면 그것은 Resource Authorization에 매우 특정하기 때문이다.가장 좋은 방법은 ResourceAuthorization을 직접 처리하고 사용 여부를 검사하는 것입니다.다른 자원 로드 플러그인과 함께 사용할 수 있도록 추상화하는 것이 좋습니다.언제 내가 이 일에 착수할지 확실하지 않으니 포크로 이 일을 하고 싶은 사람이 있으면 마음대로 하세요.
토론 #8
안녕, 라이언 등.저는 cancan(v1.1.1)을 계승된 자원(v1.0.6)과 함께 사용할 것입니다. 예외 하나를 제외하고는 제 업무가 매우 훌륭합니다.
IR 컨트롤러가 있으면 '속성' 관계가 있고, '불러오기' 와 '권한 부여' 자원을 추가할 때, IR는 새 기록을 삽입할 때 존중받는 관련 id를 잃어버립니다.그것의 ql insert에는 이 필드가 있지만 빈 값만 있습니다.load 와authorize 자원을 삭제할 때 소속 id를 포함합니다.이것은 큰 문제인 것 같다. 왜냐하면 삽입이 여전히 계속되고 있기 때문에, 나는 모든 것이 정상이라고 믿을 수밖에 없다.나는 줄곧 너의 코드를 검사하고 패치를 작성하는 것을 고려하고 있지만, 나는 여기에 이미 이렇게 한 사람이 있는지 알고 싶다.
어쨌든 멋진 플러그인 리안 고마워요.이것은 이미 내 응용 프로그램의 중요한 부분이 되었다.
모든 것이 순조롭길 빕니다.
마크 맥도널드
토론 #9
, 그래서 나의 귀속 문제는 쉽게 해결될 수 있다(또는 지금 보면 이렇다). 만약에 다음과 같은 내용만 추가한다면:리소스 로드 및 권한 부여: 제외=>[: 만들기,: 업데이트]
이것은 cancan이 모든 자원을 불러오기/구축하려고 시도하고 있기 때문입니다.그래서 자원을 계승했지만 cancan은'속'기능을 모르고 존중받는'속'관련 id를 추가하지 않았습니다. 어쨌든 이 문제를 해결하게 되어 기쁩니다.다른 분들께 시간과 슬픔을 주셨으면 좋겠어요!
멋진 보석 라이언을 선물해줘서 고마워!
Mark
토론 #10
는 상속 자원을 통해 불러오는 지원을 추가했습니다. 마감일은 4eee637270e524f56341bd595559a96a996551토론 #11
입니다. 이 점을 시도하고 싶은 사람이 있다면 최신 제출이 좋습니다.이렇게 해야 합니다load_and_authorize_resource
. 그리고 계승 자원을 사용할 수 있을 때, 현재 계승 자원을 통해 불러와야 합니다.네가 authorize_resource
만 할 수 없는 것은 Inherited Resources가 로드 지연을 하기 때문이다.또한 CanCan은 색인 작업에서 액세스할 수 있는 by와 같은 추가 로드 기능을 제공합니다.토론 #12
헤이, 라이언, 코드를 작성해 주셔서 감사합니다.주말에 해볼게요.토론 #13
안녕하세요, 리안, 제가 몇 가지 문제에 부딪혔습니다. (선별하기 전에 필터는.cancan resource 클래스가 아니라 ControllerResource를 사용합니다. 방법 #resource와 #build resource는::InheritedResources::BaseHelpers에서 보호됩니다)그래서 나는 나의 지점에서 이런 작은 변화를 했다. (죄송합니다. 테스트가 없습니다.)
http://github.com/jbarreneche/cancan
겸사겸사 한마디 하자면, 이것은 내가 처음으로 캔캔을 사용한 것이다. 나는 매우 좋아한다:)
감사합니다!
토론 #14
이 문제들을 지적해 주셔서 감사합니다. 저는 그것들을 합병할 것입니다.토론 #15
InheritedResources에 대한 변경 사항이 있으면accessible by를 사용하기 위해 집합과 자원 방법을 다시 써야 합니까?토론 #16
@contentfree, 아니오,load 자원이 컨트롤러에 있으면 자동으로 실행되어야 합니다.토론 #17
정확합니다, 선생님.고맙습니다.토론 #18
저는 현재 상술한 문제, 즉'속'과'로드', 그리고'수권'자원에 존재합니다.이것 괜찮아요?
나의 사용법은 다음과 같다.
속함: 업무 단위: 옵션 =>true
나는 너도 자원을 불러올 수 있는 권한을 부여해야 한다고 믿는다.아래처럼 보여야 한다.
오, 네, 효과가 있어요.감사합니다 @contentfree
Reference
이 문제에 관하여(칸칸과 유전 자원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/23텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)