表单的数据是保存在User模型里,能实现登陆与退出功能. 这是动作方法
public function actionLogin()
{
$model=new User(['scenario'=>'login']);
if($model->load(Yii::$app->request->post())&&$model->login())
{
return $this->render('entry-confirm',['model'=>$model]);
}
else
{
return $this->render('login',['model'=>$model]);
}
}
然后在User实现login方法
public function login()
{
if(!$this->validate())
{
return false;
}
$user=Yii::$app->db->createCommand("select * from user where username=:username",[':username'=>$this->username])->queryOne();
if($user!==null)
{
if($this->checkPassword($user['password']))
{
return Yii::$app->user->login(User::findOne(['username'=>$this->username]),$this->rememberMe ? 3600*24*7:0);
}
return false;
}
return false;
}
这里还有个问题,如果这里用 u s e r = U s e r : : f i n g O n e ( [ ′ u s e r n a m e ′ = > user=User::fingOne(['username'=> user=User::fingOne([′username′=>this->username])获取对象 。 然后用Yii:: a p p − > u s e r − > i d e n t i t y − > u s e r n a m e 获 取 数 据 , v a r d u m p ( i i : : app->user->identity->username获取数据,var_dump(ii:: app−>user−>identity−>username获取数据,vardump(ii::app->user->identity):
app\models\User Object
(
[username] =>
[password] =>
[rememberMe] =>
[_attributes:yii\db\BaseActiveRecord:private] => Array
(
[id] => 6
[username] => raohong
[password] => $2y$13$4LMusps.IbhCfMBikgP6nuA.kmDmOyCqoKlbiOEv08lVhVZfiTbcy
[authkey] => -l_yYwqmHQPrrkmXSNR097TVV3s4r_VV
[accecctoken] =>
[email] => 724736528@qq.com
)
[_oldAttributes:yii\db\BaseActiveRecord:private] => Array
(
[id] => 6
[username] => raohong
[password] => $2y$13$4LMusps.IbhCfMBikgP6nuA.kmDmOyCqoKlbiOEv08lVhVZfiTbcy
[authkey] => -l_yYwqmHQPrrkmXSNR097TVV3s4r_VV
[accecctoken] =>
[email] => 724736528@qq.com
)
[_related:yii\db\BaseActiveRecord:private] => Array
(
)
[_errors:yii\base\Model:private] =>
[_validators:yii\base\Model:private] =>
[_scenario:yii\base\Model:private] => default
[_events:yii\base\Component:private] => Array
(
)
[_behaviors:yii\base\Component:private] => Array
(
)
)
``````