APP的体验模式原理说明:
登录一个固定的账号来获取token,且token是临时的,不会保存在本地。下次进入APP时依旧回到登录页。
APP的体验模式实现方式:
当点击体验模式时,调用登录接口获取token,在全局状态管理中给一个变量来保存临时的token,给另一个变量标识此次登录为临时登录,在controller中暴露一个公共方法来获取token,在该方法中判断是否是临时登录,如果是临时登录,返回临时的token及api地址等等,如果不是临时登录,返回本地保存的token及保存的api地址等等。
APP体验模式二次开发对接方式:
在script标签下通过import引入controller,调用controller.getUserLoginMessage方法来获取当前用户登录的相关信息,无论是正常登录还是临时登录皆可从该方法中获取到登录后的信息。方法内部已经做了处理,不需要开发者在做任何其他处理。如下是内部部分实现方式:
import { storeToRefs } from 'pinia'
import { useExperienceModeStore } from '@/store/index.js'
import { sourceUrl } from '@/request/apiConfig.js'
const getUserLoginMessage = () => {
const experienceModeStore = useExperienceModeStore()
const { isExperienceMode, userMessage } = storeToRefs(experienceModeStore)
let saveMessage = {}
if (isExperienceMode.value) {
const apiAddress = sourceUrl
const loginMode = 'experience' // 体验模式
saveMessage = { ...userMessage.value, apiAddress, loginMode }
} else {
saveMessage.token = uni.getStorageSync('token') && JSON.parse(uni.getStorageSync('token'))
saveMessage.refreshToken = uni.getStorageSync('refreshToken') && JSON.parse(uni.getStorageSync('refreshToken'))
saveMessage.apiAddress = uni.getStorageSync('apiAddress') ? uni.getStorageSync('apiAddress') : sourceUrl
saveMessage.power = uni.getStorageSync('power') && JSON.parse(uni.getStorageSync('power'))
saveMessage.userName = uni.getStorageSync('userName') && JSON.parse(uni.getStorageSync('userName'))
saveMessage.userId = uni.getStorageSync('userId') && JSON.parse(uni.getStorageSync('userId'))
saveMessage.loginMode = 'normal' // 正常登录模式
}
return saveMessage
}
export default getUserLoginMessage
使用方式可以参考以下:
<script setup>
import { onLoad } from "@dcloudio/uni-app";
import controller from '@/controller/index.js'
onLoad((option) => {
const userLoginMessage = controller.getUserLoginMessage()
if (userLoginMessage.loginMode === 'experience') {
// 体验模式,体验模式下的逻辑
xxx...
} else if (userLoginMessage.loginMode === 'normal') {
// 正常登录方式,正常登录下的逻辑
xxx...
}
// 通用逻辑
})
</script>