2014-01-20 1 views
0

나는 Cakephp 웹 사이트에서 일하고 거의 끝났다. 제목 문제를 제외하고, 내가해야 할 일은 사용자가 아니라면 한 페이지로 리다이렉트하는 것이다. 충분한 액세스 수준을 유지하고 주소 표시 줄에 URL을 쓰면 실제로 제대로 작동하지만 같은 주소로 보내야하는 버튼을 누를 때가 아닙니다. 충분한 권한이 없을 때 ACL이있는 Cakephp가 리다이렉트하지 않는다.

내의 AppController 클래스

class AppController extends Controller { 
public $components = array(
    'Acl', 
    'Auth' => array(
     'authorize' => array(
      'Actions' => array('actionPath' => 'controllers') 
     ) 
    ), 
    'Session' 
); 
public $helpers = array('Html', 'Form', 'Session'); 

public function beforeFilter() { 
    //Configure AuthComponent 
    //debug($this->params,true); 
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add'); 
    $this->Auth->authError = "Error"; 
      if (isset($this->params['requested'])) $this->Auth->allow($this->action); 
} 

입니다 그리고 이것은 "추가"페이지에 링크의 예이며, 사용자가이 작업을 수행 할 수없는 경우 페이지가 구성에 리디렉션해야 사용자가 주소를 기록하면 내의 AppController에

<?php echo $this->Html->link($this->Html->image("add.png", array("alt" => "Agregar nueva encuesta","title" => "Agregar nueva encuesta")), 
     array('controller'=>'Surveys','action'=>'add',$beneficiary['Beneficiary']['id']), 
     array('escape' => false));?> 
그래서

, 명확하게하는 경우 그 해당 작업을 할 수 있음을 보여줍니다 페이지로 리디렉션됩니다 "MyServer를/수혜자는// 매개 변수를 추가",하지만 그는 아무 일도 일어나지 않는 링크를 누르면 그는 아무것도 추가 할 수 없지만 그게 필요합니다. 방향.

나는 모든 조언을 부탁드립니다.

내가 웹 디버거 "찰스"를 사용하는 방법에 대한 사용자 벤 히치콕의 조언을 따라하기로 결정

나는 나의 영어가 완벽하게 :)

편집되는 것을 멀리, 내 설명이 분명했다 바랍니다. 이것은 내가 주소 표시 줄

요청 GET/프로젝트/SUISEPV2/수혜자/편집/1 HTTP/1.1 호스트 localhost를 사용자 에이전트 모질라/5.0 (윈도우 NT 6.3을 writting

을 가지고 무엇을 ; WOW64; rv : 26.0) Gecko/20100101 Firefox/26.0 text/html, application/xhtml + xml, application/xml; q = 0.9, /; q = 0.8 Accept-Language es-ES, es; q = 0.8, en-US; q = 0.5, en; q = 0.3 Accept-Encoding gzip, 수축 쿠키 CAKEPHP = 7399cvgls9gurk37ubes1fknf0,451,515,연결 유지 (keep-alive) HTTP/1.1 302 찾을 수 날짜 2014년 1월 20일 (월) 그리니치 표준시 16시 54분 56초 서버 아파치/2.4.7 (Win32에서)에는 OpenSSL/0.9.8y의 PHP/5.4.22

Responde X-Powered-By PHP/5.4.22 위치 myserver/Projects/SUISEPV2/posts/add 콘텐츠 길이 0 연결 유지 제한 시간 = 5, 최대 = 100 연결 유지콘텐츠 형식 text/html; 문자셋 = UTF-8의 링크를 누르면

요청 : GET/프로젝트/SUISEPV2/수혜자가/편집/1 HTTP/1.1 호스트 localhost를 사용자 에이전트 모질라/5.0 (윈도우 NT 6.3; x = 0, /, q = 0.8 수락 언어 es-ES, es; q = 0.8, en-US; q = 0.5, en; q = 0.3 수락 - 인코딩 GZIP을, 폐의 리퍼러 MyServer를/프로젝트/SUISEPV2/수혜자 쿠키 CakePHP의 = 7399cvgls9gurk37ubes1fknf0 연결 유지 (keep-alive)

응답 : HTTP/1.1 302 찾을 수 날짜 2014년 1월 20일 (월) 16시 55분 : 33 GMT 서버 Apache/2.4.7 (Win32) OpenSSL/0.9.8y PHP/5.4.22 X-Powered-By PHP/5.4.22 위치 myserver/Projects/SUISEPV2/수익자 콘텐츠 길이 0 Keep- Alive timeout = 5, max = 100 연결 유지 (Keep-Alive) Content-Type text/html; charset = UTF-8

불행히도 나는 아직도 틀린 것을 볼 수 없습니다.

+0

링크에는 '컨트롤러'=> '수혜자'대신 '컨트롤러'=> '설문 조사'가 있어야합니까? –

+0

이 경우가 아니라이 버튼의 동작은 선택된 수혜자에게 한 설문 조사를 추가하는 것이지만 중요하지는 않습니다. 사용자가 수행 할 수없는 사항을 편집하거나 제거하려고해도 문제가 발생합니다. – user3013960

+0

리디렉션 루프가 진행 중입니다. 나는 찰스 (웹 프록시)를 실행하고 서버로 보내지는 것을 검사 할 것이고, 다시 돌아올 것이다. –

답변

0

그럼 솔루션을 찾았지만 원하는 것보다 효과적이었습니다. 내 레이아웃에서

내가 다음 줄

<?php echo $this->Session->flash('auth'); ?> 

을 추가 지금은 내가의 AppController 클래스

$this->Auth->authError = "Custom error message here"; 

결과에으로, beforeFilter 기능에 구성된 메시지를 표시 할 수 있습니다 다음과 같습니다

리디렉션되지 않고 링크 버튼을 누르면 메시지가 표시되어 사용자에게 알려줍니다. 주소를 쓰면 오류 페이지로 리디렉션되고 플래시 메시지가 나타납니다.

관련 문제