0

Cake php アプリケーション用に、アクティブなフィールド データ型 enum(1,0) を持つユーザー テーブルを持っています。

非アクティブなユーザーがアプリケーションにログインできないようにしたいと考えています。このために、このコードを Appcontroller.php に追加しました

  public $components = array('Acl', 'Session',
      'Auth' => array('authorize' => array('Controller'),
          'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
          'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
          'Form' => array('userModel' => 'User'),
          'all' => array('scope' => array('User.active' => 1)))
  );

私のユーザーモデルはユーザーです

ただし、これにより、アクティブなユーザーもアプリケーションにログインできるようになります。

私は何を間違っていますか?

ありがとう

4

2 に答える 2

2

配列を確認してください。間違った評価です

以下の配列を確認してください。

public $components = array(
'Auth' => array(
    'loginAction' => array(
        'controller'    => 'users',
        'action'        => 'login'
    ),
    'authError' => 'Je hebt geen toegang tot dit gedeelte',
    'authenticate' => array(
        'Form' => array(
            'fields' => array('username' => 'email'),
            'scope' => array('is_admin' => '1')
        ),

    )
),
'Session'

);

于 2013-04-22T12:39:53.580 に答える
0

私が CakePHP で列挙型を扱ったときはいつでも、それらの値は常に文字列です。したがって、あなたが直面している問題は、1と等しくないことだと思います'1'

アクティブなフィールドにBOOLEANは、 のシノニムであるデータ型を使用してみてくださいTINYINT(1)Auth次に、コンポーネント構成に次のように記述します。

public $components = array('Acl', 'Session',
    'Auth' => array('authorize' => array('Controller'),
    'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
    'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
    'Form' => array('userModel' => 'User'),
    'all' => array('scope' => array('User.active' => true)))
);

意味的には、このほうが理にかなっている気がします。

于 2013-04-22T12:19:07.560 に答える