uni-app留言板权限校验未通过
uni-app留言板权限校验未通过
官方视频无法使用于是考虑自己写连表
get_database() {
let db = uniCloud.databaseForJQL()
let uid = uniCloud.getCurrentUserInfo().uid
console.log(uid)
let a = db.collection('liuyanban').where({
$or: [{
state: true
},
{
user_id: uid
}
]
}).getTemp();
let b = db.collection('uni-id-users').field('_id, nickname, avatar_file').
getTemp();
db.collection(a,b).get()
}
然后这个是schema
{
"bsonType": "object",
"required": [],
"permission": {
"read": "doc.state == true || doc.user_id == auth.uid",
"create": "auth.uid != null",
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"text": {
"bsonType": "string"
},
"state": {
"bsonType": "bool",
"forceDefaultValue":false
},
"user_id": {
"foreignKey": "uni-id-users._id",
"bsonType": "string",
"forceDefaultValue":{
"$env": "uid"
}
},
"uid": {
"bsonType": "string",
"forceDefaultValue":{
"$env": "uid"
}
}
}
}
read改成true就可以
1 回复
在处理uni-app中的留言板权限校验未通过的问题时,我们首先需要确保权限校验的逻辑正确,并且API请求与后端服务正确对接。以下是一个基于uni-app和Vue.js的示例代码,用于展示如何实现留言板权限校验,并处理未通过的情况。
前端代码(uni-app)
首先,在uni-app项目中,我们假设有一个留言板页面messageBoard.vue
,该页面在用户登录后会根据用户的权限显示或隐藏留言板功能。
<template>
<view>
<button @click="checkPermission">进入留言板</button>
<view v-if="hasPermission">
<!-- 留言板内容 -->
<text>留言板</text>
<!-- 其他留言板组件 -->
</view>
<view v-else>
<text>您没有权限访问留言板</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
hasPermission: false,
};
},
methods: {
async checkPermission() {
try {
const response = await uni.request({
url: 'https://your-backend-api.com/checkPermission',
method: 'POST',
data: {
userId: uni.getStorageSync('userId'), // 假设用户ID存储在本地
},
});
if (response.data.success) {
this.hasPermission = true;
} else {
uni.showToast({
title: '权限校验未通过',
icon: 'none',
});
}
} catch (error) {
console.error('请求失败:', error);
uni.showToast({
title: '请求失败,请稍后重试',
icon: 'none',
});
}
},
},
onLoad() {
this.checkPermission();
},
};
</script>
后端代码(示例,Node.js + Express)
后端APIcheckPermission
用于校验用户权限。以下是一个简单的Node.js + Express示例:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/checkPermission', (req, res) => {
const { userId } = req.body;
// 假设我们有一个权限列表
const authorizedUsers = ['user123', 'admin456'];
if (authorizedUsers.includes(userId)) {
res.json({ success: true });
} else {
res.json({ success: false });
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
总结
上述代码展示了如何在uni-app中实现前端权限校验逻辑,并通过调用后端API来检查用户是否有权限访问留言板。如果权限校验未通过,前端会显示相应的提示信息。后端代码则模拟了一个简单的权限校验API。确保在实际项目中,后端API的实现能够安全、准确地校验用户权限。