私は現在、CakePhpを使用してWebサイトで簡単な認証を設定しています。この場合、ユーザーは任意のページにアクセスできますが、ログインが必要な管理システムがあります。
承認は正常に機能しており、管理ページのみが制限され、ログインページにリダイレクトされています。私が抱えている問題は、管理者としてログインできないことです。ハッシュ化されたパスワードを使用して、1つの管理レコードをデータベースに挿入しています。しかし、ログインしようとしても、本来のようにログインできませんif($this->Auth->login())
。これが私が使用しているコードです:
アプリコントローラー:
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'admins', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'admins', 'action' => 'index'),
)
);
function beforeFilter() {
if ($this->params['controller'] != 'admins') {
$this->Auth->allow('*');
}
$this->Auth->loginAction = array('controller' => 'admins', 'action' => 'login');
}
}
AdminsController:
class AdminsController extends AppController {
var $components = array('Auth');
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('login');//allow the login page to be accessed.
}
public function login() {
if($this->request->is('post')) {
if($this->Auth->login())
{
return $this->redirect(array('controller' => 'admins', 'action' => 'index'));
}
else
{
//why is it getting to this point with correct details?
debug('failed'); exit;
}
}
}
失敗することを意味する何かが欠けているかどうかわかり$this->auth->login()
ませんか?管理者ではなくすべてのユーザーの名前を変更して、問題の原因であるかどうかを確認しましたが、結果は同じでした。管理者は、次のようにパスワードをハッシュするためにauthcomponentを使用してケーキを介して追加されています。
class Admin extends AppModel {
public function beforeSave($options = array())
{
if(isset($this->data['Admin']['password'])) {
$this->data['Admin']['password'] = AuthComponent::password($this->data['Admin']['password']);
}
return true;
}
}