小程序跳转H5token问题

280 阅读1分钟

1.小程序跳转的页面代码

<template>
	<view>
		<web-view :src="url"></web-view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				url: '',
			}
		},
		onLoad() {
			this.getToken()
		},
		methods: {
			getToken() {
				let token = JSON.parse(uni.getStorageSync('userInfo')).access_token
				this.url = `localhost:8000?token=${token}`
				console.log(this.url)
			}
		}
	}
</script>

2.在H5页面处理url地址 2.1 处理url参数转对象

const parseString = function parseString(url) {
	const path = url.split('?')[1];
	const urlres = path.replace(/&/g, '","').replace(/=/g, '":"');
	const reqDataString = '{"' + urlres + '"}';
	const query = JSON.parse(reqDataString);
	return query
}

2.2在app.vue或者main.js处理

<script>
	import {
		parseString
	} from "@/utils/utils.js"
	export default {
		onLaunch() {
			console.log('onLaunch')
		},
		onShow: function() {
			console.log('onShow')
		},
		onHide: function() {},
		beforeCreate() {
			let token = parseString(window.location.href).token;
			if (token.substring(token.length - 2, token.length).indexOf('#/') !== -1) {
				token = token.substring(0, token.length - 2)
			}
			localStorage.setItem('token', token)
			console.log('beforeCreate')
		},
		created() {
			console.log('created')
		},
		methods: {}

	}
</script>

3.此时会出现个问题,request封装的请求执行速度会比你拿取token的速度快,可以在封装的请求处做个判断