yii2的auth_key是对cookie基础的干扰

时间:2017-04-18 04:42:46

标签: login yii2 remember-me

我有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密钥已更改,但用户在网站上登录,哪里有问题?

3 个答案:

答案 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'];
}