uniapp实现用户登录
时间: 2023-10-02 11:06:50 浏览: 87
uni-app登录实例的实现
uniapp实现用户登录的步骤如下:
1. 在页面创建时的created方法中判断用户是否登录,可以通过本地缓存的token来调用服务端接口返回用户信息。如果没有token,则需要进行微信授权。
2. 判断用户是否授权,可以使用微信小程序官方文档提供的API wx.getSetting,返回值中会显示小程序已经向用户请求过的权限。如果用户拒绝授权,则登录授权逻辑结束。
3. 如果用户已经授权,可以调用微信小程序官方API wx.getUserInfo或uniapp集成的微信小程序API uni.getUserInfo来获取用户的头像、昵称、openid等个人信息。注意,如果用户的scope.userInfo权限已经被回收,可以使用昵称和头像填写来进行完善用户信息。
4. 调用服务端的登录注册逻辑,完成登录或注册操作。登录或注册成功后,将服务端返回的token信息放在本地的storage缓存中。
5. 使用vuex的storage来实现用户登录状态的管理。
参考代码如下:
```javascript
// 页面创建时的created方法中判断用户是否登录
created() {
if (!this.isLogin()) {
// 用户未登录,进行微信授权
this.wxAuthorize()
} else {
// 用户已登录,显示用户登录成功之后的头像昵称信息
this.showUserInfo()
}
},
methods: {
// 判断用户是否登录
isLogin() {
// 判断本地缓存中是否存在token信息
const token = uni.getStorageSync('token')
return !!token
},
// 微信授权
wxAuthorize() {
wx.getSetting({
success: (res) => {
if (res.authSetting['scope.userInfo']) {
// 用户已授权,获取用户信息
this.getUserInfo()
} else {
// 用户未授权,进行登录授权逻辑结束
// TODO: 处理未授权情况
}
}
})
},
// 获取用户信息
getUserInfo() {
// 调用微信小程序API获取用户信息
wx.getUserInfo({
success: (res) => {
const userInfo = res.userInfo
// TODO: 处理用户信息
// 调用服务端完成登录注册逻辑
this.loginOrRegister(userInfo)
}
})
},
// 登录或注册
loginOrRegister(userInfo) {
// 调用服务端的登录注册接口
// TODO: 处理登录注册逻辑
// 登录或注册成功后将token信息放在本地storage缓存中
uni.setStorageSync('token', 'xxxxx')
// 显示用户登录成功之后的头像昵称信息
this.showUserInfo()
},
// 显示用户登录成功之后的头像昵称信息
showUserInfo() {
// TODO: 显示用户登录成功之后的头像昵称信息
// 可以通过触发全局自定义事件实现,在me.vue页面加载监听该事件
uni.$emit('meUserLogin')
}
}
```
阅读全文