uni-app ANONYMOUS login access token disabled,schema中权限直接设为true也依旧报错

uni-app ANONYMOUS login access token disabled,schema中权限直接设为true也依旧报错

项目信息 详情
产品分类 uniapp/小程序/微信
PC开发环境 Windows
操作系统版本 Windows 10 企业版 22H2
HBuilderX类型 正式
HBuilderX版本 4.36
工具版本号 1.06.2310080
基础库版本 3.7.1
项目创建方式 HBuilderX

示例代码:

//页面初次渲染时 调用的方法
async onLoad() {
    //设置一个转圈,告诉用户正在加载数据
    uni.showLoading({
        title: '加载中'
    });
    const result = await db
        .collection('instruct')
        .limit(500)
        .get(); //加载数据方法
    let list = result.result.data;
    console.log("获取到list",list)
    //修改从数据库取得值,附加一些属性进去 注意:要在绑定界面之前 否则修改属性值不会动态变化界面
    let types = [];
    list.forEach(item => {
        item.checked = false;
        if (item.items) {
            let index = item.items.findIndex(x => typeof x.isDefault != 'undefined' && x.isDefault);
            if (index != -1) {
                item.selectIndex = index;
                item.selectText = item.items[index].name;
            } else {
                item.selectIndex = null;
                item.selectText = null;
            }
        }
        if (typeof item.type_name == "undefined" || item.type_name == null) {
            item.type_name = '通用';
        }
        if (types.indexOf(item.type_name) == -1) {
            types.push(item.type_name)
        }
    });
    this.types = types;
    this.list = list; //赋值给界面属性 会自动更新界面 完成渲染
    //加载完数据后结束转圈
    uni.hideLoading();
}

instruct表的schema

{
    "bsonType": "object",
    "required": [],
    "permission": {
        "read": true,
        "create": false,
        "update": false,
        "delete": false
    },
    "properties": {
        "_id": {
            "description": "ID,系统自动生成"
        },
        "name": {
            "bsonType": "string",
            "title": "指令名称",
            "description": "指令名称,用于前端显示",
            "maxLength": 20,
            "trim": "both"
        },
        "type_name": {
            "bsonType": "string",
            "title": "分类名称",
            "description": "分类名称",
            "maxLength": 20,
            "trim": "both"
        },
        "description": {
            "bsonType": "string",
            "title": "描述",
            "description": "对指令的描述",
            "maxLength": 50,
            "trim": "both"
        },
        "items": {
            "bsonType": "array",
            "title": "选项集合",
            "description": "选项集合",
            "arrayType": "object",
            "properties": {
                "name": {
                    "bsonType": "string",
                    "title": "选项名称",
                    "description": "选项名称",
                    "maxLength": 20,
                    "trim": "both"
                },
                "data": {
                    "bsonType": "array",
                    "title": "指令数据",
                    "description": "指令数据",
                    "arrayType": "int"
                },
                "data_url": {
                    "bsonType": "string",
                    "title": "指令数据",
                    "description": "指令数据"
                },
                "isDefault": {
                    "bsonType": "bool",
                    "title": "是否默认",
                    "description": "是否默认"
                }
            }
        }
    }
}

操作步骤:

  • 搬迁云空间后,直接运行代码到小程序模拟器

预期结果:

  • 应该可以直接查询到数据的

实际结果:

  • 现在报错
VM89 vendor.js:9234 Error: [DCloud-clientDB]: access token disabled for ANONYMOUS login
at _construct (VM89 vendor.js:2717)
at new Wrapper (VM89 vendor.js:18011)
at te._createSuperInternal (VM89 vendor.js:9522)
at new te (VM89 vendor.js:10065)
at VM89 vendor.js:15911

bug描述:

  • 根据你们官方的邮件提醒,旧的腾讯云空间,需要搬迁到新云空间
  • 搬迁过后,云函数和云数据库都已经完整搬过去了
  • 接着运行小程序调试的时候,在首页index.vue中的onLoad中执行数据库查询,就报错
  • Error in onLoad hook (Promise/async): “Error: [DCloud-clientDB]: access token disabled for ANONYMOUS login”
  • (found in pages/index/index.vue)(env: Windows,mp,1.06.2310080; lib: 3.7.1)
  • VM89 vendor.js:9234 Error: [DCloud-clientDB]: access token disabled for ANONYMOUS login at _construct (VM89 vendor.js:2717) at new Wrapper (VM89 vendor.js:18011) at te._createSuperInternal (VM89 vendor.js:9522) at new te (VM89 vendor.js:10065) at VM89 vendor.js:15911

更多关于uni-app ANONYMOUS login access token disabled,schema中权限直接设为true也依旧报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

25 回复

请升级HBuilderX到4.41 alpha版,具体详见相关公告

更多关于uni-app ANONYMOUS login access token disabled,schema中权限直接设为true也依旧报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


4.41.2024121203-alpha 此版本还是报错了

此问题已修复,升级 4.42.2024121808-alpha 以上版本

升级最新的alpha版本的HBuilderX试下。

好的,马上去尝试一下

您好,升级了,依旧报错

对了,还有个情况,链接本地函数的时候,是正常的;只有切换到链接云函数的时候报错

本地云函数,只要涉及uni-id-co模块 的功能,都会报access token disabled for ANONYMOUS login

报错是出现在uni-id-co模块
是在请求https://tcb-api.tencentcloudapi.com/web?env=tcb-rcst27bfshcfr5x-9c9ie205de83的腾讯云接口时报错的, 我看那个token的过期时间还不短

人都麻了

都是这个问题 没人给解决

最近刚出现的吗?

我现在也是这个问题

你也是刚出现吗?搬云空间遇到的?

回复 2***@qq.com: 新创建腾讯云空间,编译部署uni-admin 一直都是这个问题,没法用

重新初始化空间,使用HBuilderX4.41来打包uni-admin 仍然是这个报错

回复 t***@yeah.net:

腾讯云报access token disabled for ANONYMOUS login错误

服务空间从来没有上传过云函数,上传一个云函数即可。

2024年12月之后新建的腾讯云空间,如果上传函数后仍报该错误,请使用HBuilderX 4.41及以上版本重新编译并发布前端页面来解决。

按照他们官方的文档,都操作了,依旧报错,我这边客户都骂娘了

解决了吗?博主,我也遇到了同样的问题

没解决啊,都踏马吐血了都,我客户都是商用,现在好几台云空间都卡在这儿

这是他们官方的文档说明
腾讯云报access token disabled for ANONYMOUS login错误
服务空间从来没有上传过云函数,上传一个云函数即可。
2024年12月之后新建的腾讯云空间,如果上传函数后仍报该错误,请使用HBuilderX 4.41及以上版本重新编译并发布前端页面来解决。
都试过了,不行,依旧报错

针对您提到的 uni-app 中遇到的 ANONYMOUS login access token disabled 错误,并且即便在 schema 中将权限直接设为 true 也依旧报错的问题,这通常涉及到后端权限验证配置和前端请求处理的问题。下面我将提供一些可能的代码示例和配置检查方向,以帮助您定位和解决问题。

1. 后端权限验证配置

首先,确保您的后端服务正确配置了匿名访问的权限。这里以常见的 Node.js + Express 后端为例:

// 假设使用 express-jwt 中间件进行 JWT 验证
const jwt = require('express-jwt');
const authenticateJWT = jwt({
  secret: 'your_secret_key',
  algorithms: ['HS256'],
  credentialsRequired: false // 允许没有 token 的请求通过,但会附加 user 为 null
});

app.get('/some-endpoint', authenticateJWT, (req, res) => {
  // 如果 credentialsRequired 为 false,且没有 token,req.user 将为 null
  if (!req.user) {
    // 处理匿名用户
    res.send('Anonymous access granted');
  } else {
    // 处理认证用户
    res.send(`Authenticated user: ${req.user.id}`);
  }
});

2. 前端请求处理

uni-app 中,确保发送请求时正确处理了可能的匿名访问逻辑。使用 uni.request 发送请求时,可以检查后端是否允许匿名访问,并据此决定是否附加 token:

function sendRequest(url, data, withToken = true) {
  let header = {};
  if (withToken && uni.getStorageSync('access_token')) {
    header['Authorization'] = `Bearer ${uni.getStorageSync('access_token')}`;
  }

  uni.request({
    url: url,
    method: 'POST',
    data: data,
    header: header,
    success: (res) => {
      console.log('Request success:', res.data);
    },
    fail: (err) => {
      console.error('Request failed:', err);
    }
  });
}

// 调用示例,允许匿名访问
sendRequest('/some-endpoint', { key: 'value' }, false);

3. 检查 schema 配置

虽然您提到在 schema 中设置了权限为 true,但具体实现可能依赖于您使用的权限管理库或框架。确保 schema 配置正确无误,并且后端服务能够正确解析和应用这些配置。

总结

上述代码示例和配置检查方向应能帮助您进一步定位和解决问题。如果问题依旧存在,请检查后端日志以获取更详细的错误信息,或确保前端和后端的权限验证逻辑一致。此外,确认所有相关服务(如 API 网关、身份验证服务等)都已正确配置以支持匿名访问。

回到顶部