小程序云开发笔记:判断用户权限,不同权限用户看到不同内容

编程知识 更新时间:2023-04-04 03:20:54

苦于学习小程序开发时找不到多少有用的博客教程,网上看过很多博客,不是只有几行一笔带过,就是互相都是复制粘贴,甚至全篇复制微信官方文档。

本篇博客是另一篇实战项目博客的拓展,将其中踩过的坑单独拿出来做个总结。有兴趣可以去看看那篇:

小程序实战:推文留言板


实际上此功能可以直接由 JavaScript 实现,如果你要实现的功能复杂,建议不要用本文的方法。


更新了一下代码,发现微信把 getWXContext 接口返回的数据路径变了。

判断用户权限

要判断用户权限,首先得在数据库建立一个集合,比如我这里叫 author,然后在里面添加你想设置成管理员用户的 _openid。

然后使用云函数返回用户的openid,这个云函数实际就是云开发的模板中的 login 函数。

//cloudfuctions/login/login.js
const cloud = require('wx-server-sdk')
// 初始化 cloud
cloud.init({
  // API 调用都保持和云函数当前所在环境一致
  env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = (event, context) => {
  console.log(event)
  console.log(context)
  const wxContext = cloud.getWXContext()
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
    env: wxContext.ENV,
  }
}

再用一个函数调用云函数得到用户的openid,与数据库中的id比较判断是否相等,如果相等,就让页面的 data 中定义的判定权限的变量 authority 为 true:

//判断用户权限
  authentication: function () {
    wx.cloud.callFunction({
      name: 'login',
      complete: res => {
        db.collection('author').get().then(res2 => {
          if (res.result.openid === res2.data[0]._openid) {
            this.setData({
              authority: true
            })
          }
        })
      }
    })
  },

然后我在某个时候调用这个函数,就实现了用户的鉴权。

比如我在页面加载时就调用这个函数:

onLoad: function (options) {
    this.authentication();
  },

到这里判断用户权限的功能已经实现,如果用户是设置的管理员,那么他使用小程序时 authority 值为 true。


如何让不同权限用户看到不同内容

我们在上面已经得到,管理员的 authority 值为 true,所以我们利用这个值进行判断即可。

比如在 wxml 中我想让一个 button 只有管理员能看见,那么我们用 wx:if = '{{authority}}' 判断一下用户身份即可。

代码示例:

<button wx:if = '{{authority}}'>只有管理员才能看到这个按钮</button>

这样只有 authority 值为 true 的人这个按钮才会被显示出来,组件的功能也自然普通用户用不了了。其他组件同理,当然你也可以把权限更加细分,原理是一样的。

更多推荐

小程序云开发笔记:判断用户权限,不同权限用户看到不同内容

本文发布于:2023-04-04 03:20:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/9d8314c3cf87c6197f4b72edb0faa79b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:用户权限   权限   笔记   程序   内容

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 40939文章数
  • 14阅读数
  • 0评论数