普通登录注册以及用户授权登陆

普通登陆注册

概述

此功能的实现简单的借助了微信小程序的云开发,具体在哪里使用,我会标出来。对于用户名、账号、密码都做了简单的校验。主要练手功能的实现,样式只做了简单的编写。

用户页面展示登陆注册两个按钮,没有账户可以选择注册,注册成功后跳转到展示登陆注册的用户页面。登陆成功后,用户界面展示用户名。

实现注册功能

效果展示

用户名长度至少两位且小于十位,用户账号至少四位,用户密码至少四位。成功注册后,跳转回用户登陆注册页面。

代码与注释

输入用户名
<input class="input" bindinput="getName"></input>
输入用户账号
<input class="input" bindinput="getZhangHao"></input>
输入用户密码
<input class="input" bindinput="getMiMa"></input>
<button bindtap="zhuce" type="primary">注册</button>
.input{
border: 1px solid gainsboro;
margin: 15rpx;
}
Page({

  /**
* 页面的初始数据
*/
data: {
name:'',
zhanghao:'',
mima:''
},
//获取用户名
getName(e){
this.setData({
name:e.detail.value
})
},
//获取用户账号
getZhangHao(e){
this.setData({
zhanghao:e.detail.value
})
},
//获取用户密码
getMiMa(e){
this.setData({
mima:e.detail.value
})
},
//注册
zhuce(){
let name=this.data.name
let zhanghao=this.data.zhanghao
let mima=this.data.mima
console.log('name',name)
console.log('zhanghao',zhanghao)
console.log('mima',mima)
/* 校验用户名 */
if(name.length<2){
wx.showToast({
icon:'none',
title: '用户名至少2位',
})
return
}
if(name.length>10){
wx.showToast({
icon:'none',
title: '用户名最多10位',
})
return
}
// 校验账号
if(zhanghao.length<4){
wx.showToast({
icon:'none',
title: '用户账号至少4位',
})
return
}
//校验密码
if(mima.length<4){
wx.showToast({
icon:'none',
title: '用户密码至少4位',
})
return
}
//注册功能实现
//使用微信官方云开发提供的 wx.cloud.database().collection('user').add({}),在数据库中的user表中添加新的用户名、账号、密码。
wx.cloud.database().collection('user').add({
data:{
name:name,
zhanghao:zhanghao,
mima:mima
},
success(res){
wx.showToast({
title: '注册成功',
})
wx.navigateTo({
url: '../user/user',//跳转到用户登陆注册界面
})
},
fail(res){
console.log('fail',res)
}
}) }
})

云开发 数据库中添加新的表

实现登录功能

效果展示

代码

<!--pages/login/login.wxml-->
输入账号
<input class="input" bindinput="getZhangHao"></input>
输入密码
<input class="input" bindinput="getMiMa"></input>
<button type="primary" bindtap="login">登陆</button>
.input{
border: 1px solid gainsboro;
margin: 15rpx;
}
// pages/login/login.js
Page({ /**
* 页面的初始数据
*/
data: {
zhanghao:'',
mima:''
},
// 获取账号
getZhangHao(e){
this.setData({
zhanghao:e.detail.value
})
},
// 获取密码
getMiMa(e){
this.setData({
mima:e.detail.value
})
},
// 登陆功能
login(){
let zhanghao=this.data.zhanghao
let mima=this.data.mima
// console.log('账号',zhanghao,'密码',mima)
//账号校验
if(zhanghao.length<4){
wx.showToast({
icon:'none',
title: '账号至少4位',
})
return
}
//密码校验
if(mima.length<4){
wx.showToast({
icon:'none',
title: '密码至少4位',
})
return
}
//借助小程序云开发提供的 wx.cloud.database().collection('user').where({})
//指定查询与输入账号相等账号,返回带新查询账号的新的集合引用
//.get({})获取根据查询条件筛选后的集合数据。
//如果输入密码与集合密码相同则登陆成功,则传用户名参数并跳转到用户界面,用户界面显示用户名
wx.cloud.database().collection('user').where({
zhanghao:zhanghao
}).get({
success(res){
let user=res.data[0]
console.log(user.name)
if(mima==user.mima){
wx.showToast({
title: '登陆成功',
}) wx.navigateTo({
url: '../user/user?name=' + user.name,
})
//保护用户登陆状态,将用户信息存储到Storage
wx.setStorageSync('user', user)
}else{
wx.showToast({
icon:'none',
title: '账号或密码不正确',
})
}
},
fail(res){
console.log("fail",res)
}
})
}
})

可在

中看到。

实现退出功能以及用户界面

效果展示

未登录

已登录

退出登录返回到未登录界面

代码

<!--pages/user/user.wxml-->
<!-- 未登录 -->
<view wx:if="{{!loginOK}}">
<button type="primary" class="zhuce" bindtap="denglu">登陆</button>
<button class="zhuce" bindtap="zhuce">注册</button>
</view>
<!-- 已登陆 -->
<view wx:else class="login-ok">
<text>{{name}}</text>
<button bindtap="tuichu">退出登录</button>
</view>
/* pages/user/user.wxss */
.zhuce{
margin-top: 50rpx;
}
.login-ok{
text-align: center;
}
// pages/user/user.js
Page({ /**
* 页面的初始数据
*/
data: {
loginOK:false,
name:''
},
// 去登陆页
denglu(){
wx.navigateTo({
url: '../login/login',
})
},
// 去注册页
zhuce(){
wx.navigateTo({
url: '../index/index',
})
},
//展示获取到的用户名
onShow(){
let user=wx.getStorageSync('user')
//storage中存在user且用户名存在则更改展示用户名的条件为true
if(user&&user.name){
this.setData({
loginOK:true,
name:user.name
})
}else{
this.setData({
loginOK:false
})
}
},
// 退出登录
//退出登陆后将storage中的user清空
tuichu(){
wx.setStorageSync('user', null)
//校验
let user=wx.getStorageSync('user')
if(user&&user.name){
this.setData({
loginOK:true,
name:user.name
})
}else{
this.setData({
loginOK:false
})
}
} })

微信小程序常见两种登陆注册方式(一)的更多相关文章

  1. 微信小程序中两种回到顶部按钮的效果实现

    一,使用view形式的回到顶部HTML: <image src='../../img/button-top.png' class='goTop' hidden='{{!floorstatus}} ...

  2. 官方问答--微信小程序常见FAQ (17.8.21-17.8.27)

    给提问的开发者的建议:提问之前先查询 文档.通过社区右上角搜索搜索已经存在的问题. 写一个简明扼要的标题,并且正文描述清楚你的问题. 提交 BUG:需要带上基础库版本号,设备信息(iOS, Andro ...

  3. 微信小程序的两个BUG?

    微信小程序的两个BUG,也许可能是我搞错了 1.wx.uploadFile 用循环上传图片的时候,电脑.苹果手机上都会正常,安卓机上面则会出现the same task is working的问题 2 ...

  4. 小程序-文章:微信小程序常见的UI框架/组件库总结

    ylbtech-小程序-文章:微信小程序常见的UI框架/组件库总结 1.返回顶部 1. 想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小 ...

  5. 微信小程序常见错误及基本排除方法

    也接触了不少人解决问题的过程里,有一些比较难以排查的可能性列举在这,方便大家看一下:   也欢迎大家把自己常用的排除方法列举在这,一起互相学习探讨!1:ES6:使用es6可能导致安卓端真机调试时很多问 ...

  6. 微信小程序 服务器端生成用户登陆环节的 3rd_session

    一.环境: CentOS 6.8 nginx 1.8.0 php 7.0.10 二.背景 最近在开发一个微信小程序,不可避免的涉及到登陆的环节,登录时序图如下: 通过 wx.login() 获取到用户 ...

  7. 微信小程序开发 - 用户授权登陆

    准备:微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序开发文档:htt ...

  8. 微信小程序常见的坑

    wxml的标签跟html里面的一些标签是一样的,比如view标签相当于div标签,text标签相当于span标签. 在微信小程序中,表单元素都是原生组件,微信小程序中原生组件层级最高,所以在用inpu ...

  9. 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能

    1.效果图: 2.页面仅仅利用了JS的相关功能,包含:wxml.js.wxss 2.1wxml页面代码: <text>绑定手机</text> <form bindsubm ...

随机推荐

  1. iframe页面二次登录问题

    原文链接:iframe页面二次登录问题 生产问题 问题背景 由于历史原因,公司内部系统有一些页面是基于iframe嵌入的其他系统的页面,之前一直运行正常,最近不知什么原因接连出现访问所有iframe页 ...

  2. orleans集群及负载均衡实现

    netcore6项目,微服务框架选orleans ,国内似乎没什么项目在用,坑多无资料.orleans文档可以解决几乎,只能看官方资料. Introduction | Microsoft Orlean ...

  3. Java中:接口,抽象类,内部类

    Java8中的接口 public interface Output { //接口里定义的成员变量只能是常量 //默认使用public static final修饰 int MAX_CACHE_LINE ...

  4. C#检测外部exe程序弹窗错误,并重启

    private void button2_Click(object sender, EventArgs e) { string mainTitle = System.Configuration.Con ...

  5. 【记录一个问题】在goland中的_test.go文件中,点右键点run,无法执行测试用例

    比较奇怪的是: 在命令行下,用 test -v alloc_test.go -test.run TestAlloc_utilJoinCPUAndGpu alloc.go 可以执行测试用例 比较奇怪的是 ...

  6. GUI系统

    通常情况下,一般使用QT来制作Linux系统的GUI,但是由于我们团队对于游戏有着狂热的热爱,以及有游戏的相关开发经验. 在做过ROS与Arduino通信,Unity3d与Arduino通信后,我感觉 ...

  7. Ajax_Json用法

    Ajax_Json用法 关于json的服务端代码 //首先在方法里面设置一个响应json数据对象   const data = {       name:'chenxigua'   }​ //因为 s ...

  8. 实习之bii--总体感受体验

    在bii实习了一个暑假,感受收获都不少,记录一下. 首先当时面试时其实说的比较多的是sdn,结果来了以后主要在搞DNS,介绍一下所做的工作为何吧.bii名为北京下一代互联网工程中心,由于IPV6的逐渐 ...

  9. Android Native -- Message/Handler/Looper机制(应用篇)

    ⌈Android Native消息队列处理系列文章⌋ Android Native -- Message/Handler/Looper机制(原理篇) Android Native -- Message ...

  10. %r和%s的区别

    理解%r和%s的区别 %r会重现所表达的对象,%s会将所有转成字符串 eg1: print('i am %s years old' % 22) print('i am %r years old' % ...