좋아, 어떻게 AuthComponent :: 로그인 작품에 대해 먼저 설명. Cake 2.x에서이 방법은 인증을하지 않고 세션에 Auth.User 배열을 만듭니다. 실제 인증을 직접 구현해야합니다 (사용자 모델은이를 수행하기위한 자연스러운 장소입니다). 기본 인증 방법은 다음과 같을 수 있습니다.
App::uses('AuthComponent', 'Controller/Component');
public function authenticate($data) {
$user = $this->find('first', array(
'conditions' => array('User.login' => $data['login']),
));
if($user['User']['password'] !== AuthComponent::password($data['password']) {
return false;
}
unset($user['User']['password']); // don't forget this part
return $user;
// the reason I return the user is so I can pass it to Authcomponent::login if desired
}
이제 사용자 모델이로드되어있는 한 모든 컨트롤러에서 사용할 수 있습니다. Controller::loadModel('User')
을 호출하여로드 할 수 있다는 사실을 알고있을 수 있습니다. 당신은 모든 요청을 인증하려는 경우
, 당신은 다음의 AppController의으로, beforeFilter 방법에 넣어해야합니다
public function beforeFilter() {
$this->loadModel('User');
if(!$this->User->authenticate($this->request->data)) {
throw new UnauthorizedException(__('You don\'t belong here.'));
}
}
위의 모든
는 로그인과 암호 모든 시간 POST 값을 전달한다고 가정합니다. 나는 토큰 인증이 확실히 더 좋은 방법이라고 생각하지만, 일어나서 이것을 실행하는 것이 효과가있다. 몇 가지 단점은 모든 요청과 매번 해싱 알고리즘의 높은 CPU 사용량을 때마다 일반 텍스트로 암호를 보내는 것입니다 (ssl을 요구하지 않는 한). 그럼에도 불구하고, 이것이 당신에게 cakephp로 인증하는 법을 더 잘 이해하기를 바랍니다.
무엇인가 명확하게해야하는지 알려주세요.
업데이트 : 게시 한 이래로 실제로 매개 변수없이 AuthComponent :: login을 사용할 수 있다는 것을 알았지 만, 그렇게하는 팬이 아닙니다. CakePHP 문서에서 :
In 2.x $this->Auth->login($this->request->data) will log the user in with
whatever data is posted, whereas in 1.3 $this->Auth->login($this->data)
would try to identify the user first and only log in when successful.
답장을 보내 주셔서 감사합니다. 나는 API를 사용하는 모바일 앱이 세션을 유지할 수 없기 때문에 각 동작에 대해 어떻게 인증해야하는지 궁금했다. –