2013-04-11 2 views
1

한 모델의 인덱스에서 관련 모델 목록이 있습니다. 목록에서 삭제 게시물 링크가 포함됩니다.CakePHP에서 다른 모델을 삭제하려고 할 때 CSRF 오류가 발생합니다.

그러나 다른 모델에 속한보기에서 한 모델을 삭제하기 위해 삭제 후 링크를 ​​사용하면 CSRF 오류가 발생합니다.

이것은 Cake의 보안 구성 요소가 작동하는 방식 일 수 있지만 보안 방법을 손상시키지 않고이 문제를 해결할 수있는 방법이 있습니까?

편집 : 코드 추가.

는 은보기에 게시물 링크 (이 경우는, 내 운동 모델에 대한 인덱스보기)

:

echo $this->Form->postLink('Delete', array('controller' => 'folders', 'action' => 'delete', $key), array('class' => 'delete', 'confirm' => 'Are you sure? This will also delete all associated exercises.')); 

폴더 컨트롤러에 삭제 조치 :

public function delete($id) { 
    if ($this->request->is('get')) { 
     throw new MethodNotAllowedException(); 
    } 
    if ($this->Folder->delete()) { 
     $this->Session->setFlash('Folder '.$id.' has been deleted.', 'default', array('class' => 'success')); 
     $this->redirect(array('controller' => 'exercises', 'action' => 'index')); 
    } 
} 
+0

을 사용하면 삭제 후 링크의 코드 나 방법이 목록을 표시하고를 포함 할 수 있습니다 문서의이 부분을 읽어? – Nunser

답변

1

CakePHP의 보안 구성 요소가 있습니다 당신은 당신의 행동에 어떤 컨트롤러들 및/또는 액션들이 요청을 보낼 수 있도록 허용 할 것인지 지정해야합니다.

Restricting cross controller communication

+0

나는 그 라인을 따라 뭔가 있어야한다는 것을 알았다. 나는 Auth Component에''authorize '=> array ('Controller ')'를 추가하면 처리 할 수있을 것이라고 생각했지만 그렇지 않다고 생각합니다! 감사. –

+0

기꺼이 도와 드리겠습니다! 이 설정을 구현하는 동안 해킹이 발생하지 않았습니다. – thaJeztah

+0

정확히 무엇을 했습니까? 나는 링크를 따라 갔지만 그것을 구현하는 방법을 얻지 못했다. –

관련 문제