loginFlow
登录界面支持两种登录方式,一种是手机号+验证码登录;第二种是账号+密码登录。用户可以在这两种登录方式之间进行切换。登录成功以后会获取用户信息存储在 vuex 中并使用 localStorage 做一个持久化存储;同时也会打开 websocket 的链接,并且跳回上一级页面,提示用户登录成功。
checkLogin
1 | <view |
disabledButton
在用户信息没有填写完整之前,我们应该将登录按钮设置为禁用状态。如下代码所示:
1 | <view class="py-2 px-3"> |
1 | computed: { |
getPhoneCode
获取验证码登录是很常见的一种方式,一般都是通过获取验证码的接口发短信到用户的手机上,用户填入对应的验证码,进行比对以后就可以正常登录。
验证手机号格式
用户如果采用手机号+验证码的方式登录,那么我们应该校验手机号格式。如下代码所示:
1 | <!-- 省去其他代码... --> |
1 | // 表单验证 |
如上代码所示,在验证手机号以后,访问接口拿到验证码,同时倒计时 60 秒开始计时。
loginAction
当用户填入表单信息以后,点击登录按钮就会触发登录操作。在这里要注意的是要先判断一下是用的哪种登录方式,从而改变对应的后台 url 和表单信息。如下代码所示:
1 | <view class="py-2 px-3"> |
1 | submit() { |
setStorage
登录成功以后,会获取用户的信息,并且放在前端的vuex
状态中,同时呢使用了uni.setStorageSync
将信息做一个持久化存储。如代码所示:
1 | // pages/login/login.vue |
openSocket
用户在登录成功以后,除了要将用户信息保存在前端供其他页面使用以外,还要开启socket
,连接上 socket 以后就等于说是上线了,可以跟其他用户进行实时通讯,比如私信。这里用到了uni.connectSocket
如代码所示:
1 | // pages/login/login.vue 触发名为openSocket的action |
loginSuccess
用户登录成功以后要给用户一个成功的弹窗提示,并且跳回到之前的页面中去。这里跳转用到了uni.navigateBack
和uni.showToast
这两个 API。如下代码所示:
1 | // 提示和跳转 |
uniApi
uni.navigateBack
关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()
获取当前的页面栈,决定需要返回几层。
示例:
1 | // 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码 |
uni.showToast
显示消息提示框。
示例
1 | uni.showToast({ |
uni.setStorageSync
将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
示例代码
1 | try { |
uni.connectSocket
创建一个 WebSocket 连接。
示例代码
1 | uni.connectSocket({ |
返回值
如果希望返回一个socketTask
对象,需要至少传入 success
/ fail
/ complete
参数中的一个。例如:
1 | var socketTask = uni.connectSocket({ |
api doc
登录页面用到的几个接口,以下是文档说明。
sendCode
简介:发送验证码的接口。
- url:
http://localhost:8081/api/user/sendcode
- method: ‘POST’
请求参数
1 | { |
phoneLogin
简介:使用验证码登录的接口。
- url:
http://localhost:8081/api/user/phonelogin
- method: ‘POST’
请求参数
1 | { |
userLogin
简介:使用账户密码登录的接口。
- url:
http://localhost:8081/api/user/login
- method: ‘POST’
请求参数
1 | { |