2017-02-24 8 views
1

나는 만들고있는 응용 프로그램 용 API를 개발 중입니다. 이 응용 프로그램은이 API의 모든 정보를 가져옵니다. (먼저 사용자를 인증 한 다음 정보를 얻습니다.)Cakephp REST API를 사용하여 사용자 식별

지금 사용자가 사용자 이름과 암호를 API로 보내고 정보를 확인하고 그것이 "ok"또는 "not"이면 매우 간단하게 시작합니다. 나는 이것에 관련된 모든 보안을 알고, 단지이 일을 할 필요가있다.

이미 API 사이드에서 사용자 이름과 비밀번호를 보내고 있습니다. 데이터가 올바르게 저장되었는지 100 % 확신합니다. 비록, 나는

$this->Auth->identify($this->request->data);

그것은 항상 나에게 거짓 (이미 매개 변수와, 그 결과가 동일하지 않고 시도) 반환을 호출 할 때.

나는 HttpRequester, firefox plugin을 사용하여 정보를 보내고 있습니다.

$ this-> request-> 데이터의 디버그를 통해 정보가 정확한지 확인했습니다. 암호가 해시 된 이후 데이터베이스에서 찾기를 수행 할 수 없습니다.

 $this->loadComponent('Auth', [ 
     'authenticate' => [ 
      'Form' => [ 
       'fields' => [ 
        'username' => 'email', 
        'password' => 'password' 
       ] 
      ], 
     ] 
    ]); 

    if($this->request->is('POST')){ 
     //debug($this->request->data); 
     $user = $this->Auth->identify($this->request->data); 
    } 

사용자 테이블 : :

데이터베이스 암호 필드는 (이미 255 노력도없이 일) (300) 길이 도움

편집에 대한

감사와 VARCHAR입니다

protected $_accessible = [ 
    '*' => true, 
]; 

/** 
* Hash password 
* 
*/ 
protected function _setPassword($password) 
{ 
    return (new DefaultPasswordHasher)->hash($password); 
} 

protected function _getFullName() 
{ 
    if(isset($this->_properties['full_name'])){ 
     return ucwords(mb_strtolower($this->_properties['full_name'])); 
    } 
} 

ps : 또한 다음을 시도해보십시오. m 포스트, 또한 행운)

$this->request->data['username'] = "xxxx"; 
$this->request->data['password'] = "zzzz"; 
+0

Configuring Authentication Handlers을 확인해야한다 사용자 정의 필드 이름도'username' 대신에'email'입니다. 'username' 키는 인증 자 (authenticator)가 구성된 필드/열 이름에 액세스 할 수있는 옵션 이름입니다. – ndm

+0

그래, 그게 문제였다 :) 고마워! – Cafn

답변

3

문제는 여기

'Form' => [ 
       'fields' => [ 
        'username' => 'email', //email is your database field 
        'password' => 'password' // password is your database field name 
       ] 
      ], 

코드는 당신이를 사용해야합니다

 'Form' => [ 
       'fields' => [ 
        'username' => 'username', 
        'password' => 'password' 
       ] 
      ], 

정보는 요청 데이터에

+0

안녕하세요. @ tarikul05. 답변 해주셔서 감사합니다! 비록, 내 데이터베이스에서, 내가 사용하는 두 필드는 이메일과 패스워드이다. – Cafn

+0

그런 다음'$ this-> request-> data [ 'username']'는'$ this-> request-> data [ 'email'] ' – tarikul05

+0

이어야한다. 그것은 그것이었다 @ tarikul05. 도와 주셔서 감사합니다 :) – Cafn