0

我在身份验证组件方面遇到了一些问题。每次我尝试使用用户登录时(我已经使用正确的参数检查了数据库中是否存在用户),我的应用程序都会向我抛出登录失败消息。

我有两个模型,Accounts 和Employees,其中一个Employee 属于Account,一个Account hasOne Employee。我用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');
    }
}

拜托,有人可以告诉我我做错了什么吗?如果您需要查看其他代码部分,请告诉我。

谢谢!

4

1 回答 1

0

使用 ControllerAuthorize 时'authorize' => array('Controller'),您需要isAuthorized()在 AppController 中实现一个返回布尔值的方法。

 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;
}

您可以查看文档的 Auth 部分以获取更多信息,搜索“Using ControllerAuthorize”

于 2013-11-04T16:27:06.750 回答