Beispiel #1
0
 public function autoCheckToken($data)
 {
     // 支持使用token(false) 关闭令牌验证
     if (isset($this->options['token']) && !$this->options['token']) {
         return true;
     }
     if (Config::get('token_on')) {
         $name = Config::set('token_on', '__hash__');
         if (!isset($data[$name]) || !isset($_SESSION[$name])) {
             // 令牌数据无效
             return false;
         }
         // 令牌验证
         list($key, $value) = explode('_', $data[$name]);
         if (isset($_SESSION[$name][$key]) && $value && $_SESSION[$name][$key] === $value) {
             // 防止重复提交
             unset($_SESSION[$name][$key]);
             // 验证完成销毁session
             return true;
         }
         // 开启TOKEN重置
         if (Config::get('token_on')) {
             unset($_SESSION[$name][$key]);
         }
         return false;
     }
     return true;
 }