微搭低代码实现用户登录及注册功能

Posted 低代码布道师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微搭低代码实现用户登录及注册功能相关的知识,希望对你有一定的参考价值。

在小程序开发中,我们可以拿到微信用户的openid,openid可以作为用户的唯一标识,在查询数据的时候可以进行数据过滤实现查询自己提交的数据。那微搭中是否也有openid这个概念,可以获取用户自己提交的数据呢?

答案是肯定的,那要怎么去做呢?思路是先创建一个数据源方法,在数据源中返回openid,然后低代码中可以调用数据源的方法并且赋值给全局变量,这样在后续的业务中从全局变量就可以获取openid了,方便做数据权限的控制。

为了实现这个目的,我们从创建数据源开始。

创建数据源

我们先创建一个用户管理的数据源,包含用户的基础信息,并且增加一个openid的字段

添加一个自定义方法,返回用户的openid

const cloud = require('wx-server-sdk');
cloud.init(
  env: cloud.DYNAMIC_CURRENT_ENV,
)
module.exports = async function (params, context) 
        
  const wxContext = cloud.getWXContext()
  return 
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
        
    


创建应用

我们新建一个空白应用,类型选择小程序

创建一个空白页,在页面中添加如下组件

组件的逻辑是如果是未登录就显示一个图片和未登录的文本,点击登录按钮,授权成功后就出现用户的头像和昵称

为了实现上述的逻辑我们先定义一个用户的变量

初始值设置如下


  "city": "",
  "gender": "",
  "openid": "",
  "country": "",
  "language": "zh_CN",
  "nickName": "",
  "province": "",
  "avatarUrl": ""

然后将第一个图片和第二个文本组件绑定为变量中的头像和昵称


我们在组件上的if判断通过表达式来判断组件是否显示

未登录时候显示的组件的If判断正好和上边的表达式是反着的

这样就实现了未登录时候和登录后页面效果的切换

接着就需要实现登录的逻辑,给页面定义一个低码方法,在小程序加载的时候我们去获取openid

export default 
  async onAppLaunch(launchOpts) 
    //console.log('---------> LifeCycle onAppLaunch', launchOpts)
    const objData = await app.cloud.dataSources.userinfo_xpw5sxe.getopenid();
    app.dataset.state.useropenid=objData.openid;  //赋给全局变量

  ,
  onAppShow(appShowOpts) 
    //console.log('---------> LifeCycle onAppShow', appShowOpts)
  ,
  onAppHide() 
    //console.log('---------> LifeCycle onAppHide')
  ,
  onAppError(options) 
    //console.log('---------> LifeCycle onAppError', options)
  ,
  onAppPageNotFound(options) 
    //console.log('---------> LifeCycle onAppPageNotFound', options)
  ,
  onAppUnhandledRejection(options) 
    //console.log('---------> LifeCycle onAppUnhandledRejection', options)
  

在当前页面定义低代码方法,实现登录逻辑


/*
* 可通过 $page.handler.xxx 访问这里定义的方法
* 注意:该方法仅在所属的页面有效
* 如果需要 async-await,请修改成 export default async function() 
*/

export default async function(event, data) 

 
    try 
     wx.getUserProfile(
            desc: '用于完善用户信息',
            success:async (res) => 
            //const data = await app.cloud.dataSources.userinfo_xpw5sxe.wedaCreate(res);
            console.log("res.userinfo",res.userInfo)
            $page.dataset.state.userinfo = res.userInfo
            $page.dataset.state.userinfo.openid = app.dataset.state.useropenid
            let ret =await app.dataSources.userinfo_xpw5sxe.wedaCreate($page.dataset.state.userinfo);
            console.log(ret)
            
    )
    //console.log("userinfo",$page.dataset.state.userinfo)
    //const ret = await app.dataSources.userinfo_xpw5sxe.wedaCreate($page.dataset.state.userinfo);
    //console.log(ret)
     catch (e) 
    console.log('错误代码', e.code, '错误信息', e.message);
  

然后给按钮定义点击事件,调用该方法

预览发布

功能开发好后,点击发布,发布成预览版

授权登录之后会往数据源里写一条记录,记录用户的信息

这样用户登录注册的功能就做好了,后续的提交页面都需要带上openid,方便我们在查询页面根据openid来过滤数据。

以上是关于微搭低代码实现用户登录及注册功能的主要内容,如果未能解决你的问题,请参考以下文章

微搭低代码中的用户登录及注册

使用微搭低代码实现小程序消息订阅及发送功能

使用微搭低代码实现小程序消息订阅及发送功能

小程序中实现用户的登录与注册

小程序中实现用户的登录与注册

微搭低代码上线「快速注册小程序」能力