나는 이것을 수행하는 방법에 대해 완전히 완전히 분실했다. 세 가지 역할 : 관리자, 직원 및 기부자가 있습니다. 내 문제는 권한이없는 사용자가 URL에서 작업에 액세스하려고하면 권한 및 적절한 리디렉션을 사용하여 실제로 혼란 스럽습니다 (나에게 어쨌든). 내 UsersController에서cakePHP- 역할 인증 및 라우팅
I가 다음 작업
- admin_index
- admin_add
- admin_edit
- admin_view
- admin_delete
비 접두사 행동
- 로그인
- 로그 아웃
- 보기
- 추가
- 편집 관리자는 직원 반면, 로그인뿐만 아니라 모든 관리자-접두사 작업을 액세스하고 로그 아웃 할 수 있어야
기부자 은 후자에 대해서만 액세스 할 수 있어야합니다. 5. 모든 사용자가 동일한 로그인 양식을 사용하고 있습니다. 내 AppControlles의 구성 요소에서
나는 다음과 같은 한 :
'Auth' => array(
'loginRedirect' => array(
'controller' => 'donors',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'authorize' => array('Controller')
)
하지만, 내 로그인 행동에서 나는 그에 따라 loginRedirect을 변경하려면 사용자 역할에 대해 확인 :
if($this->request->is('post')){
if($this->Auth->login()){
switch($this->Auth->user('role')){
case 'admin':
$this->Auth->loginRedirect = array('controller'=>'users','action'=>'admin_index','prefix'=>'admin','admin'=>true);
break;
case 'donor':
...
break;
case .....
}
}
}
질문 1 자, donor 역할을 가진 현재 사용자가 로그인하여 localhost/sitename/admin/users/add
에 액세스하려고 시도하면 그는 /donors
이 아닌 admin/donors
으로 리디렉션됩니다. 그러면 관리자 접두어를 어떻게 제거 할 수 있습니까?
질문 2 난 충분히 이해가 안 돼요 $ this-> Auth-> allow(), works .. 내 donorsController에서 역할에 따라 컨트롤러 작업에 대한 액세스를 제어하고 싶다면 어떻게해야합니까? 그것? 예를 들어, donorsController에 'delete'액션이있는 경우, 기부자 사용자가 삭제 작업에 액세스하는 것을 거부하는 동안 직원 사용자를 어떻게 허용 할 수 있습니까? 나는 beforeFilter가 해결책이라고 믿지만 그것을하는 법을 찾을 수 없다! 어떤 포인터? 감사합니다.
항상 정확한 cakephp 버전을 언급해야합니다. 팁 : 여기서 거대한 컨트롤러 코드 오버 헤드를 만드는 대신 간단한/로그인 폼과 [Tiny] (http://www.dereuromark.de/2011/12/18/tinyauth-the-fastest- and-easiest-authorization-for-cake2 /)를 Auth 방식으로 사용합니다. 이렇게하면 각 작업이 명확하게 정의되고 액세스 권한이없는 경우 모든 작업이 중앙 로그인 양식으로 /로 리디렉션됩니다. – mark
답안을 보내 주셔서 감사합니다! 나는 당신의 블로그를 살펴보고 깨끗해 보인다. 그러나 역할은 사용자의 테이블에서 필드가 아닌 모델로 정의되므로이 설정은 필요하지 않습니다. 또한 $ this-> Auth-allow()가 작동하는 방법을 이해하는 데 여전히 문제가 있습니다. 물론 내가 가지고있는 설정으로 다시 시작할 수 있기를 바랍니다. 감사! – LogixMaster
사용자 테이블 필드 만 작동합니다. 그것을위한 문서를 읽으십시오. 모델 일 필요는 없습니다. – mark