CakePHP Auth组件授权,无需用户模型

时间:2011-06-28 14:43:35

标签: cakephp components authentication

是否可以在没有用户模型的情况下使用Auth Component?我想只有我的应用程序的一个用户,所以我不想制作用户模型我只想用一个登录/密码登录,这将存储在php文件中。

2 个答案:

答案 0 :(得分:6)

简单的答案是

答案越长,您希望使用该模型存储此信息。在我看来,在PHP文件中存储用户密码是一个非常糟糕的主意。您将系统设置为完全不灵活。当你再吸引5个用户时会发生什么?

使用1个记录然后users PHP文件设置users数据库表会好得多。从长远来看,这将是一项很少的工作,因为Cake的AuthComponent被设置为处理数据库表。

此外,read this post on Stack Overflow about storing passwords。它将为Cake AuthComponent的工作原理提供一些见解。

答案 1 :(得分:0)

Althogh你可以创建一个自定义身份验证类,除了学习内部行为之外我不知道使用它。

// Controller/Component/Auth/CustomBasicAuthenticate.php
class CustomBasicAuthenticate {

    public function authenticate(CakeRequest $request, CakeResponse $response) {
        return true;
    }

    public function getUser($request) {
        if (env('PHP_AUTH_USER') === 'foo' && env('PHP_AUTH_PW') === 'bar') {
            return array(
                'User' => array(
                    'id' => '1', 'username' => 'foo', 'password' => 'bar'
                )
            );
        } else {
            return false;
        }
    }

    public function unauthenticated(CakeRequest $request, CakeResponse $response) {
        $response->statusCode('401');
        $response->header('WWW-Authenticate: Basic realm="My Realm"');
        $response->body('fail');
        $response->send();
    }
}

// Controller/HelloController.php
class HelloController extends AppController {

    public $autoRender = false;
    public $uses = array('User');

    public $components = array(
        'Auth' => array(
            'loginAction' => array(
            'controller' => 'hello',
            'action' => 'index',
        ),
            'authenticate' => array(
                'CustomBasic' => array('userModel' => 'User')
            )
        )
    );

    public function index() {
        echo 'ok';
    }
}