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
请升级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 网关、身份验证服务等)都已正确配置以支持匿名访问。