【问题标题】:Kohana Auth on every requestKohana Auth 每个请求
【发布时间】:2013-07-09 08:45:42
【问题描述】:

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

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

classes/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);
    }

}

classes/Controller/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();

    }

}

【问题讨论】:

  • 您的 PHP(或 Apache)错误日志说明了什么?通常,您会在应用程序的日志文件中找到有关为什么会出现 500 Internal Server 错误的更多信息。
  • 啊,这有帮助。出于某种原因,错误没有像往常一样被记录到 Kohana 日志中,例如,如果我拼错了一个类。我检查了日志,它表明我的 _login() 声明需要与它覆盖的方法兼容。我缺少一个参数。
  • 很高兴有帮助!您能回答自己的问题并将其标记为已接受吗?谢谢

标签: php kohana kohana-3


【解决方案1】:

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

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

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

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

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

我错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多