2011-06-28 9 views
1

ユーザモデルなしの認証コンポーネントは使用できますか?私は自分のアプリケーションのユーザーを1人だけにしたいので、PHPのファイルに保存されるログイン/パスワードでログインしたいユーザーモデルを作成したくありません。CakePHP Authユーザモデルなしのコンポーネント認証

答えて

6

簡単な答えはいいえです。

これ以上の回答は、モデルを使用してこの情報を保存することです。私の意見では、ユーザーのパスワードをPHPファイルに保存することは非常に悪い考えです。あなたはあなたのシステムを完全に柔軟性のないものにするでしょう。あなたに5人のユーザーがいるとどうなりますか?

usersデータベーステーブルの設定を1レコード、users PHPファイルにする方がはるかに良いでしょう。そして、ケーキのAuthComponentがデータベーステーブルを処理するように設定されて以来、長い目で見ればより少ない作業になるでしょう。また、read this post on Stack Overflow about storing passwords。それはなぜケーキのAuthComponentがそれと同じように動作するかについてのいくつかの洞察を提供するでしょう。

0

あなたはカスタム認証クラスを作成することができますが、内部の動作を学習すること以外は使用することはできません。

// 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'; 
    } 
} 
関連する問題