私のアプリでは、セッションを使用してユーザーのデータ(名前、役割など)を保存しています。私はからyii2のデフォルトのUser
クラスを使用しています。私はユーザーIDで必要なデータを取得しています。
問題は、ユーザーが以前のセッションをパスワードを入力せずに再開すると、セッションに保存されたデータが失われることです(remember meオプションを使用して)。これを解決するために、ユーザのデータを保存するためのコードをUser
のvalidateAuthKey()
メソッド内に保存して修正しようとしました.yy2がauthkeyをチェックしてセッションを再開すると呼び出されるためです。以下のように:あなたが見ることができるようにloginByCookie()後のアクション
public function validateAuthKey($authKey)
{
$user = Member::findOne(['account_id' => Yii::$app->user->id]);
// Save on session
Yii::$app->session->set('name', $user->first_name . ' ' . $user->last_name);
Yii::$app->session->set('position', $user->position);
// .. other data
return true;
}
、私はMember
を見つけるために、ログインしたユーザーのIDを使用します。しかし、これを行うことで、私は "非オブジェクトのプロパティを取得しようとしている"という例外をYii::$app->user->id
から取得しました。私はログインプロセスが完了した後にのみIDを取得できます。お手伝いをした後、私はloginByCookie()
からUser
にvendor\yiisoft\yii2\Web
がログインに使用されていることを発見しました。ベンダーのコードを改ざんすることなくユーザーのデータを保存する方法はありますか? loginByCookie()
の後で何らかのイベントが実行される可能性があります。