0

CakePHP 1.3では、 usersテーブルにユーザーのIDを指定してユーザーにログインすることはできますか?

ここで、「手動」ログインを行うために、これを行います(これは機能します)。

$this->data['User']['username'] = username;
$this->data['User']['password'] = password;
$this->Auth->login($this->data);

たとえば、login()関数の前に$ this-> data ['User'] ['user_id']を追加するなど、特定のユーザーを指定できるようにしたいと思います。(私はそれを試しましたが、機能しません)。

これを実行したい理由は、usersテーブルに、同じユーザー名パスワードを持つユーザーの異なるユーザーレコードがあるためです。奇妙に思えますが、私の場合は理にかなっています。1人の同じユーザーがさまざまな理由で複数のアカウントを作成し、同じユーザー名/パスワードを選択する可能性があるためです。

どんなアイデアでも大歓迎です!

編集:

私がやろうとしていることの具体例を挙げようと思います。おそらくそれはいくつかのアイデアをもたらすのに役立つでしょう。

ユーザーテーブルにこの2つのレコードがあるとします(フィールドはuser_id /ユーザー名/パスワード/ account_idです):

  • レコード1:1 / johndoe / password1 / 10
  • レコード2:2 / johndoe / password1 / 15

したがって、この2つのレコードのユーザー名とパスワードは同じですが、user_idとaccount_idが異なります。ログインが処理されると、ユーザーが選択したaccount_idがわかります。そのため、対応するユーザーにログインしたいと思います。したがって、ユーザーがアカウント15を選択した場合、ログは次のようになります。ID2でユーザーにログインする必要があります。

ただし、ケーキのログインが機能する方法では、ユーザー名/パスワードに一致する最初のレコードを常に取得します。この例では、cakeはID1のユーザーにログインします。

やりたいことができる方法はありますか?

4

1 に答える 1

0

私にはあまり良い考えではないように思えますが、本当にそのようにしたい/しなければならない場合は、を見てくださいAuthComponent::userScope。これを使用して、認証ルックアップの追加条件を定義できます。次に例を示します。

$this->Auth->userScope = array('User.account_id' => 15);

そうすれば、認証はユーザー名とパスワードが一致し、ユーザーaccount_idが一致する場合にのみ成功します15。つまり、結果のクエリは次のようになります。

User.username = 'abc' AND User.password = 'xyz' AND User.account_id = 15
于 2012-12-06T01:38:02.350 に答える