제거 작업을 수행하면 자원이 제거되지 않고 강제로 로그아웃됩니다.
3132 단어 cancan
묘사
안녕하세요.나는 이미 Desive와 CanCan을 세웠다.
index
, show
, new
, create
, edit
과 update
방법의 운행이 양호하지만 어떤 원인으로 인해 destroy
방법은 권한 수여 체인을 깨고 있다.CanCan은 어떤 이유로 관리자(:magage
:all
능력 보유)가 기록을 폐기하는 것을 거부했습니다.만약에 제가 (관리자로 로그인) 자원을 소각할 권리가 있다면
can? :destroy, resource
을 se에 간단하게 표시하려고 합니다. (can?
시도와 can?
이 최종적으로 호출한 load_and_authorize_resource
시도가 같다고 믿습니다?!기록을 망칠 수 있을 것 같습니다.이것에 대해 간단한 해석이 있습니까? 아니면 어떤 물건이 고장났습니까?나는 아직 인터넷에서 유사한 문제의 흔적을 찾지 못했다.만약 이 문제에 내가 아직 찾지 못한 간단한 해결 방안이 있다면 솔직히 말해라.
인사하다
Emil
토론 #1
모든 사용자의 권한을can :manage, :all
으로 변경하려고 했습니다. 현재 이 자원은 삭제되었지만 이 사용자는 이후에도 로그아웃됩니다.토론 #2
.:magage
.이것은 그것에 영향을 줄 수 있다.토론 #셋
방금 재검사했습니다.내 능력 수업에 이거 없어.그래서 이 문제를 쓸 때 이것은 맞춤법 오류이다.토론 #4
CanCan은 기록을 폐기할 때 별다른 일을 하지 않았다.권한이 실패할 때의 행위의 일부분이 아니라면 관리자를 왜 취소해야 하는지 알 수 없습니다.관리자가 로그아웃되어 있는지 확인하려면 컨트롤러에서
load_and_authorize_resource
을 일시적으로 제거하십시오.없으면 작업에 추가하십시오.raise CanCan::AccessDenied
같은 로그아웃 행위가 있는지 확인해 보세요.토론 #5
컨트롤러에서load_and_authorize_resource
을 제거하면 AuthorizationNotPerformed
오류가 발생합니다.그래서 저도 같은 컨트롤러에 skip_authorization_check
을 써야 한다고 가정할까요?만약 상술한 상황이라면, 그것은 대상을 소각한 후에도 나를 취소할 것이다.잘 받았어.이게 Desive와 관련이 있다는 뜻일 것 같은데?
토론 #6
상세 정보:나는 이미
load_and_authorize_resource
을 컨트롤러에 되돌려 놓으려고 시도했지만, 로그아웃 문제는 여전히 존재하지만, 기록을 삭제하는 것을 허락하지 않는다.def 초기화(사용자)
사용자 | | = 사용자.새것
사용자라면계정 관리자?
can:관리,:계좌
끝맺다
사용자라면관리자?
can:manage,:all
기타
can:read,:all
토론 #7
을 끝내고 더 많은 것을 발견했습니다.프로그램 컨트롤러에서 접근을 거부한 것이 사실입니다.다른 사람의 방문을 거부할 때마다 로그인 경로로 다시 지정됩니다.반대로 Desive는 로그인 양식에 액세스한 모든 사용자를 로그아웃합니다.그래서 CanCan은 관리자(:manage, :all
-권한 보유)의 기록 폐기 권한을 거부했다는 사실이 증명되었다.토론 #8
콘솔에서 이 동작을 복제할 수 있는지 확인하십시오.만약 그것이 그곳에서 일한다면 아마도 컨트롤러 측의current_user
이 정확하게 통과하지 못했을 것이다.네, 토론 #9
.내가 해 봤는데ability.can?(:destroy, project)
이 진짜로 돌아왔기 때문에 문제가 아닌 것 같다.그러나 현재 사용자가 해석되었는지 어떻게 검사해야 합니까?CanCan 코드에서 Ability.new(current_user)
은 어디에서 호출됩니까?이러면 내가 거기서 일할 수 있겠어?토론 #10
그물로 물고기를 잡은 후, 나는 네가 옳다는 것을 발견했다.can?
메서드를 호출할 때 사용자 세션이 중지되었습니다.나는 html 보기에 csrf 표시를 추가해서 이 문제를 복구했다.이것은 분명히 통관에 관한 일이다.토론 #11
성공하셔서 반갑습니다.다른 사람이 비슷한 문제를 겪을 경우Ability.new(current_user)
코드는 CanCan의 ControllerAdditions#current_ability
모듈에 있습니다.모든 컨트롤러에 current_ability
을 다시 써서 행동을 바꾸고 테스트를 할 수 있습니다.토론 #12
너무 좋아요.나는 이미 이 문제 때문에 몇 시간 동안 발버둥쳤다.제목은 "자원을 파괴할 수 없습니다"를 붙여야 합니다.토론 #13
@dankozlowski가 제목을 변경했습니다. 조언해 주셔서 감사합니다.Reference
이 문제에 관하여(제거 작업을 수행하면 자원이 제거되지 않고 강제로 로그아웃됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/382텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)