我有auth_key的问题,我有登录表单而且它正常工作而不记得我并且记得我,但我读了yii文档,在那个文档写了关于记住我使用id和auth_key创建cookie以保持用户很长一段时间,我检查框架代码,并有三个参数(id,auth_key,expire_time())我将auth_key保存在用户表中,它的代码在这里
var students = new Array();
function enter() {
students.push({
name: document.getElementById("inp").value,
score: document.getElementById("inps").value
});
show();
}
function show() {
document.getElementById("iop").innerHTML = "";
students.forEach(x => {
document.getElementById("iop").innerHTML += x.name + "<br/>";
});
}
但我有问题,如果用户登录网站,我转到用户表并更改auth_key字段,现在如果用户刷新页面,它必须抛出网站,因为它的auth密钥已更改,但用户在网站上登录,哪里有问题?
答案 0 :(得分:0)
auth_key
的主要用途是通过cookie验证用户(用户不必再次登录数据)。当您选择在登录时记住时,这就是您被记住的方式。系统必须以某种方式识别并登录您。如果你改变它,它就不会注销用户。
答案 1 :(得分:0)
您可以尝试在&#34; ValidateAutney&#34;中自行更改密钥。方法,但这是一个不好的做法,最好设置会话时间。
答案 2 :(得分:0)
'session' => [
'class' => 'yii\mongodb\Session',
'writeCallback' => function($session)
{
return [
'user_id' => Yii::$app->user->id,
'agent' => Yii::$app->request->getUserAgent(),
'ip' => Yii::$app->request->getUserIP(),
'auth_key' => Yii::$app->security->generateRandomString(),
];
}
],
public function getAuthKey()
{
Yii::$app->session->open();
$query = new Query();
$query->select(['auth_key'])
->from('cache')
->where(['id'=> Yii::$app->session->id ]);
$row = $query->one();
return $row['auth_key'];
}