모든 자원 제한
3024 단어 cancan
묘사
저는 캔캔을 계속 연구하고 있습니다. 저는 캔캔의 디자인을 매우 좋아합니다...그러나 저는 잠금을 사용합니다. 기본적으로 모든 자원은 제한을 받기 때문에 접근 권한을 명확하게 주어야 합니다.나는 이것이 더욱 안전한 방법이라고 생각한다.칸칸이 가능한가?도잠금 차단 방법이 호출되고 링크 to 방법을 사용하여 링크가 자동으로 표시/숨겨집니다.이 기능은 cancan에서 쉽게 실현됩니까?
토론 #1
기본적으로 CanCan 기능의 모든 자원은 제한을 받지만 CanCan의 작업 방식은 잠금과 약간 다르다. 왜냐하면 모델의 권한을 직접 처리하는 것이지 컨트롤러를 직접 처리하는 것이 아니기 때문이다.이것은 컨트롤러와 분리되어 있기 때문에 낮은 단계에서 권한을 검사하고 모델의 속성에 의존할 수 있습니다.따라서
load_and_authorize_resource
같은 도구를 사용하여 모든 컨트롤러에 권한을 부여할 수 있습니다.Application Controller에 check_authorization
를 추가하여 각 애플리케이션에서 이러한 문제가 발생하도록 할 수 있습니다.자세한 내용은 위키 페이지Ensure Authorization를 참조하십시오.also... Lockdown intercepts method calls and will automatically show/hide link using the link_to method. would this feature be easy to implement with cancan?
멋진 기능이지만, CanCan은 컨트롤러에 따라 권한을 정의하지 않기 때문에 여기에 적용되지 않는다.나도 덮어쓰기
link_to
기능을 좋아하지 않는다.만약 당신이 이런 행동을 원한다면, 약간 첨가하기 쉽다 Link Helpers.CanCan을 디렉터 및 뷰와 분리시키려고 시도했지만, 이러한 개념을 보다 잘 통합할 수 있도록 CanCan을 확장하는 방법에 대해 생각해 보신다면 알려 주십시오.
토론 #2
CanCan에 대해 기본적으로 모든 자원을 제한합니다...아마도 나는 단지 설치가 정확하지 않을 것이다.빈 def initialize (user) 방법으로 능력 클래스를 정의했지만, 모델을 업데이트할 수 있습니다.나는 can에 접근할 권리가 있기 때문에 나의 능력 클래스가 불러왔는지 확인할 수 있습니다.할 수 없다?방법은 자원 X를 관리할 수 없다는 것을 되돌려줍니다. 하지만 모델을 관리할 때 제한을 받지 않습니다.무슨 건의가 있습니까?토론 #셋
듣자니 컨트롤러에 권한이 없다.load_and_authorize_resource
호출을 디렉터에 추가했습니까?모든 컨트롤러에서 권한을 부여할 수 있도록 Ensure Authorizationwiki 페이지를 참조하십시오.토론 #4
컨트롤러에서 권한 수여와 모델에 있는 권한 분리를 사용하면 모델(능력류에서 지정)에 대한 권한 수여 접근이 없을 때 어느 컨트롤러 조작에서 왔든지 이상을 일으킬 수 없습니까?아마도 나는 cancan이 어떻게 작동하는지 잘 모르겠지만, 이 기능을 설명하고, 모델을 제한하기만 하면 컨트롤러에 권한을 부여하는 것은 불필요한 것 같다.
예컨대.능력을 정의한 경우(표준 RESTful 컨트롤러로 가정):
사용자라면관리자?
can: 관리, 사용자
기타
can: 읽기, 사용자
끝맺다
그리고 보기/사용자/인덱스...문제없다
보기/사용자/1/편집까지...문제없다
편집을 제출하고create를 호출할 때까지 모델이 이상을 되돌려줍니다. 이 기능은 관리를 허용하지 않기 때문입니다.
편집 페이지 보기를 막으려면 권한을 부여합니다!컨트롤러에서 사용하지만 모델을 제한할 필요는 없습니다.
만약 내가 기본적인 요소를 빠뜨렸다면, 나는 사과할 것이다.그냥 나한테 완전 의미 있게 해주고 싶었어.
토론 #5
(Ability
류는 권한을 추가하지 않고 권한을 수여하는 행위 방식만 정의한다.컨트롤러에 권한을 추가해야 합니다.만약 권한이 자동으로 추가된다면, 이것은 좋을 수 있지만, 나는 어떻게 깨끗한 방식으로 이 기능을 실현할 수 있는지 모르겠다.CanCan 사용자 모델이 편집 중임을 어떻게 알 수 있습니까?내가 아는 유일한 방법은
User
모델의 방법을 다시 쓰고 이런 방식으로 행위를 주입하는 것이다.이 느낌은 너무 혼란스러워서 나는 많은 문제를 가져올 것이라고 생각한다.권한 수여 행위는 컨트롤러 층에 속하지만, 모든 컨트롤러의 행위 방식이 같지 않기 때문에 자동으로 추가할 수 없습니다.
load_and_authorize_resource
여러 가지 옵션이 있으며 컨트롤러에 맞게 맞춤형으로 구성해야 할 수도 있습니다.토론 #6
는 본 주제가 어느 정도 제191기에 포괄되었기 때문에 끝났다.Reference
이 문제에 관하여(모든 자원 제한), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/173텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)