Authentication Yii2注册而不保存会话数据
我的Yii2高级申请表中有注册表格。在我的应用程序中,只有管理员可以注册用户。但当我注册新用户时,管理会话数据被销毁,新用户的会话数据被设置。我尝试的是在注册新用户时不更改会话数据。管理员用户仍然是,应设置为会话数据。如何解决这个问题。这是我在控制器中的操作:Authentication Yii2注册而不保存会话数据,authentication,yii2,authorization,yii2-advanced-app,Authentication,Yii2,Authorization,Yii2 Advanced App,我的Yii2高级申请表中有注册表格。在我的应用程序中,只有管理员可以注册用户。但当我注册新用户时,管理会话数据被销毁,新用户的会话数据被设置。我尝试的是在注册新用户时不更改会话数据。管理员用户仍然是,应设置为会话数据。如何解决这个问题。这是我在控制器中的操作: public function actionSignup() { $model = new SignupForm(); if(Yii::$app->user->can('admin'))
public function actionSignup()
{
$model = new SignupForm();
if(Yii::$app->user->can('admin'))
{
if (($response = self::ajaxValidate($model)) !== false)
return $response;
if (self::postValidate($model))
{
try
{
$trans = Yii::$app->db->beginTransaction();
if ($user = $model->signup()) {
Yii::$app->getUser()->login($user);
}
//tagidan tushgan odamining child_left, child_right tini o'zgartirish
$under = UserModel::findOne($user->id_parent_under);
if ($under->id_child_left == 0)
$under->id_child_left = $user->id;
else
$under->id_child_right = $user->id;
$under->update(false);
ChildrenBinaryModel::insertNewUser($user);
ChildrenClassicModel::insertNewUser($user);
$parents = ChildrenBinaryModel::find()->with('user')->where(["id_child" => $user->id])->orderBy(['depth' => SORT_ASC])->all();
$c_user = $user;
foreach($parents as $p)
{
$p_user = $p->user;
if ($p_user->id_child_left == $c_user->id)
$p_user->ball_left += 100;
else
$p_user->ball_right += 100;
$p_user->update(false);
$c_user = $p_user;
}
$trans->commit();
}
catch(\Exception $e)
{
$trans->rollBack();
return $this->renderContent($e->getMessage());
}
return $this->render('index');
}
return $this->render('signup', [
'model' => $model,
]);
}else{
throw new ForbiddenHttpException;
}
}
签出\yii\web\User::login()
。当通过调用Yii::$app->getUser()->login($user)
在代码中运行时,会话数据将设置为与$user
匹配
如果总是管理员用户在注册新用户,我甚至不确定您是否需要运行登录方法。我已经解决了这个问题。为了使答案清晰简单,我将向您展示site controller(Yii2高级模板)中的默认注册操作: 我唯一做的就是添加这个
Yii::$app->user->enableSession = false
在if语句中请用代码更新您的问题。您如何注册此用户?向我们展示控制器中的操作以及正在使用的用户模型的任何方法。在“我的操作”中,一切正常。我的意思是数据将被添加到数据库中,用户将在创建新用户时注册。但是,例如,我想添加名为Johnny的用户。操作将被执行,然后在我的网站登录的用户将约翰尼不是管理员。但我试图实现添加JohnnyIf后管理员仍应被记录如果您决定将enalbeSession设置为
false
,则无需在该if内执行该操作(这只会使该语句永远不会发生)。顺便看一下。看看你的代码,你只需要删除任何登录尝试,正如@spencer4of6所说。
Yii::$app->user->enableSession = false