我想用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();
}
}
答案 0 :(得分:0)
事实证明,我错误地声明了我正在扩展的类的方法。
Kohana中的Auth类定义了这种方法:
abstract protected functin _login($username, $password, $remember);
由于我不需要记住密码,我认为将方法声明为:
protected function _login($username, $password) {};
我错了。