今日特马四肖三期必出一期

TP6引用auth类鉴权提示Array to string conversion

浏览:160 发布日期:2019/12/19 分类:ThinkPHP6专区
TP6引用auth类进行权限判断的时候,提示Array to string conversion,检查了一晚上也没查出了哪里出问题,请教一下各位大神求指教!!

错误提示[8] ErrorException in Builder.php line 755
Array to string conversion
     */
    protected function parseIn(Query $query, string $key, string $exp, $value, $field, int $bindType): string
    {
        // IN 查询
        if ($value instanceof Closure) {
            $value = $this->parseClosure($query, $value, false);
        } elseif ($value instanceof Raw) {
            $value = $value->getValue();
        } else {
            $value = array_unique(is_array($value) ? $value : explode(',', $value));
            $array = [];

            foreach ($value as $v) {
                $name    = $query->bindValue($v, $bindType);
                $array[] = ':' . $name;
            }

            if (count($array) == 1) {
                return $key . ('IN' == $exp ? ' = ' : ' <> ') . $array[0];
Call Stack
in Builder.php line 755
at Error->appError()
at array_unique() in Builder.php line 755
at Builder->parseIn() in Builder.php line 526
at Builder->parseWhereItem() in Builder.php line 383
at Builder->parseWhereLogic() in Builder.php line 331
at Builder->buildWhere() in Builder.php line 299
at Builder->parseWhere() in Mysql.php line 94
at Mysql->select() in PDOConnection.php line 843
at PDOConnection->think\db\{closure}() in PDOConnection.php line 632
at PDOConnection->query() in PDOConnection.php line 844
at PDOConnection->select() in BaseQuery.php line 1078
at BaseQuery->select() in Auth.php line 241
at Auth->getAuthList() in Auth.php line 142
at Auth->check() in Auth.php line 20
at Auth->handle()
at call_user_func() in Middleware.php line 142
at Middleware->think\{closure}() in Pipeline.php line 84
at Pipeline->think\{closure}() in Pipeline.php line 65
at Pipeline->then() in Route.php line 748
at Route->dispatch() in Http.php line 213
at Http->dispatchToRoute() in Http.php line 203
at Http->think\{closure}() in Pipeline.php line 59
at Pipeline->think\{closure}() in TraceDebug.php line 71
at TraceDebug->handle()
at call_user_func() in Middleware.php line 142
at Middleware->think\{closure}() in Pipeline.php line 84
at Pipeline->think\{closure}() in MultiApp.php line 71
at MultiApp->think\app\{closure}() in Pipeline.php line 59
at Pipeline->think\{closure}() in Pipeline.php line 65
at Pipeline->then() in MultiApp.php line 72
at MultiApp->handle()
at call_user_func() in Middleware.php line 142
at Middleware->think\{closure}() in Pipeline.php line 84
at Pipeline->think\{closure}() in Pipeline.php line 65
at Pipeline->then() in Http.php line 204
at Http->runWithRequest() in Http.php line 162
at Http->run() in index.php line 20
权限判断代码public function check($name, $uid, $type = 1, $mode = 'url', $relation = 'or') {
        if (!$this->_config['auth_on']) {
            return true;
        }
        $authList = $this->getAuthList($uid, $type); //获取用户需要验证的所有有效规则列表
        if (is_string($name)) {
            $name = strtolower($name);
//            if (strpos($name, ',') !== false) {
//                $name = explode(',', $name);
//            } else {
//                $name = [$name];
//            }
            $name = strpos($name, ',') !== false ? explode(',', $name) : [$name];
        }
        $list = []; //保存验证通过的规则名
        if ($mode == 'url') {
            $REQUEST = unserialize(strtolower(serialize($_REQUEST)));
        }
        foreach ($authList as $auth) {
            $query = preg_replace('/^.+\?/U', '', $auth);
            if ($mode == 'url' && $query != $auth) {
                parse_str($query, $param); //解析规则中的param
                $intersect = array_intersect_assoc($REQUEST, $param);
                $auth = preg_replace('/\?.*$/U', '', $auth);
                if (in_array($auth, $name) && $intersect == $param) {  //如果节点相符且url参数满足
                    $list[] = $auth;
                }
            } else if (in_array($auth, $name)) {
                $list[] = $auth;
            }
        }
        if ($relation == 'or' and ! empty($list)) {
            return true;
        }
        $diff = array_diff($name, $list);
        if ($relation == 'and' and empty($diff)) {
            return true;
        }
        return false;
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>
爱摩登官方客服www.szimden.com
宏基客运站www.hjky.net
澳门赌场www.hljqipai.com
澳门赌场www.ddzschool.com
快3www.ahdzgh.org
快3www.gddsy.com
江苏博铭威精密机械制造有限公司www.jsbooming.com
快3www.ahdzgh.org
快3www.xilaijia.com.cn
快3www.sxminmetals.com