0

我想用 Kohana 构建一个无状态系统,所以我不想使用会话。我想在每个请求中发送一个用户名和密码(此时这些凭据的传输方式无关紧要),使用 Kohana 检查凭据是否正确,并使用相关数据或 401 响应。

我知道我可能需要扩展 Auth 模块,但由于某种原因,我不断得到 500 个。这是我正在尝试的:

类/Auth.php

<?php defined('SYSPATH') OR die('No direct access allowed');

class Auth extends Kohana_Auth {

    public static function checkCredentials($username, $password) {
        return TRUE;
    }

    public function password($username) {
        parent::password($username);
    }

    public function check_password($password) {
        parent::check_password($password);
    }

    protected function _login($username, $password) {
        parent::_login($username, $password);
    }

}

类/控制器/Frontdesk.php

<?php defined('SYSPATH') or die('No direct script access.');

abstract class Controller_Frontdesk extends Kohana_Controller {

    public function before() {
        parent::before();

        // If not logged in, throw exception
        if (!Auth::checkCredentials('john@acme.com','fido')) throw new HTTP_Exception_401();

    }

}
4

1 回答 1

0

事实证明,我错误地声明了我正在扩展的类的方法。

Kohana 中的 Auth 类定义了这个方法:

abstract protected functin _login($username, $password, $remember);

由于我不需要记住密码,所以我认为可以将方法声明为:

protected function _login($username, $password) {};

我错了。

于 2013-07-09T09:41:18.813 回答