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 に答える