1
查看:我總是授權Yii2
<?php
$modelLogin = new \app\models\LoginForm();
?>
<div class="auth_box">
<?php $form = ActiveForm::begin([
'id' => 'login-form',
'action' => ['site/login'],
'enableClientValidation' => false,
'enableAjaxValidation' => true,
//'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n<div class=\"form_error\">{error}</div>"
]
]); ?>
<?= $form->field($modelLogin, 'username')->textInput(['placeholder' => 'Login']) ?>
<?= $form->field($modelLogin, 'password')->passwordInput(['placeholder' => 'Password']) ?>
<?= $form->field($modelLogin, 'rememberMe', [
'template' => "{input}",
])->checkbox() ?>
<?= Html::submitInput('Enter') ?>
<?php ActiveForm::end(); ?>
<a href="#" id="restore_password">I don't remember my password</a>
</div>
控制器:
public function actionLogin()
{
if (!\Yii::$app->user->isGuest) {
return $this->goHome();
}
$modelLogin = new LoginForm();
if (Yii::$app->request->isAjax) {
$modelLogin->load(Yii::$app->request->post());
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($modelLogin);
} elseif ($modelLogin->load(Yii::$app->request->post()) && $modelLogin->login()) {
return $this->goBack();
}
}
模型,方法登錄:
public function login()
{
if ($this->validate()) {
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 365 : 0);
} else {
return false;
}
}
當我檢查「記住我「我的餅乾看起來像:
有_identity參數。
當我不勾選 「記住我」 我的餅乾看起來像:
沒有_identity參數。
在這兩種情況下,我總是在重新打開瀏覽器後授權。
您使用的是Chrome嗎? Chrome以不刪除會話cookie而聞名,這將解釋關閉瀏覽器後始終得到授權的事實(請查閱http://stackoverflow.com/a/10772420/1235708)。 _identity參數可能是yii用來存儲用於通過cookie驗證用戶身份信息的cookie,這可以解釋當您設置記住我複選框時僅被設置的事實。 – bfilipesoares
@bfilipesoares是的,Chrome。但是......我的Chrome可以使用很多人=) –
是的,我明白了......但是沒有辦法繞過它......爲了註銷用戶(使用chrome),你必須將他註銷到服務器端(又名隱含地改變/銷燬他的會話)。 但是,如果您嘗試在Firefox中關閉窗口後,用戶在再次打開時將不會進行身份驗證。 – bfilipesoares