我在使用身份验证组件时遇到了一些问题。每次我尝试使用用户登录时(我已经检查过该用户是否存在正确的params数据库),我的应用程序会向我发送失败的登录消息。
我有两个模型,帐户和员工,其中一个员工属于帐户,一个帐户有一个员工。我使用saveAssociated()保存数据,数据库中一切正常,但无法登录。
我一直在寻找解决方案,并一次又一次地重复CookBook教程,我找不到我做错了什么。
以下是一些代码:
class AppController extends Controller {
public $components = array(
'DebugKit.Toolbar',
'Session',
'Auth' => array(
'loginAction' => array('controller' => 'accounts', 'action' => 'login'),
'loginRedirect' => array('controller' => 'snippets', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'snippets', 'action' => 'index'),
'authorize' => array('Controller')));
public function beforeFilter() {
$this->Auth->loginAction = array('controller' => 'accounts', 'action' => 'login');
$this->Auth->authenticate = array(
AuthComponent::ALL => array(
'userModel' => 'Account',
'fields' => array('username' => 'username', 'password' => 'password')),
'Basic',
'Form');
$this->Auth->allow('index', 'view');
我的登录功能:
public function login() {
if($this->request->is('post')) {
if ($this->Auth->login()) {
$this->Session->setFlash(__('Welcome'));
return $this->redirect(array('controller' => 'snippets', 'action' => 'index'));
//return $this->redirect($this->Auth->redirect());
}
$this->Session->setFlash(__('Wrong password or email'), 'default', array(), 'auth');
}
}
拜托,有人可以告诉我,我做错了什么?如果您需要查看其他一些代码部分,请告诉我。
谢谢!
答案 0 :(得分:0)
使用ControllerAuthorize 'authorize' => array('Controller')
时,您需要实现一个在AppController中返回布尔值的isAuthorized()
方法。
public function isAuthorized($user = null) {
// Any registered user can access public functions
if (empty($this->request->params['admin'])) {
return true;
}
// Only admins can access admin functions
if (isset($this->request->params['admin'])) {
return (bool)($user['role'] === 'admin');
}
// Default deny
return false;
}
您可以查看the Auth Section of the docs文档了解详情,搜索“使用ControllerAuthorize”