使用session和token的坑

浏览:3190 发布日期:2016/04/22 分类:ThinkPHP5专区
1、如果在config文件里的session设置了 prefix ,那么当直接使用 $_SESSION的时候会出现找不到session的问题。因为此时的session文件是 $_SESSION['prefix']。
2、如果使用 session()函数调用或者赋值,不会出问题,会自动加上 prefix 。如果 $_SESSION混用,而且没有增加 prefix就会找不到 session。
3、3.23的 tokenbuild.php文件修改后如下:    private function getToken(){
        $tokenName = $this->config['token_name'];
        $tokenType = $this->config['token_type'];

        $session_Token = session($tokenName);
        if (!isset($sess_Token)) {
            $session_Token = [];
        }
        // 标识当前页面唯一性
        $tokenKey = md5($_SERVER['REQUEST_URI']);
        if (isset($session_Token[$tokenKey])) {
            // 相同页面不重复生成session
            $tokenValue = $session_Token[$tokenKey];
        } else {
            $tokenValue                      = is_callable($tokenType) ? $tokenType(microtime(true)) : md5(microtime(true));
            //赋值
            session($tokenName.'.'.$tokenKey,$tokenValue);
            //$_SESSION[$tokenName][$tokenKey] = $tokenValue;
            if (IS_AJAX && $this->config['token_reset']) {
                header($tokenName . ': ' . $tokenKey . '_' . $tokenValue);
            }
            //ajax需要获得这个header并替换页面中meta中的token值
        }
        return [$tokenName, $tokenKey, $tokenValue];
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>