제거 작업을 수행하면 자원이 제거되지 않고 강제로 로그아웃됩니다.

3132 단어 cancan

묘사

안녕하세요.
나는 이미 Desive와 CanCan을 세웠다.index, show, new, create, editupdate 방법의 운행이 양호하지만 어떤 원인으로 인해 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가 제목을 변경했습니다. 조언해 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기