vue路由傳參-如何使用encodeURI加密參數(shù)
使用encodeURI加密參數(shù)
在路由切換時頁面需要使用地址欄傳參,但地址欄會暴露參數(shù)的值,然后想到了encodeURI加密參數(shù)
比如參數(shù)是一個對象obj
obj:{ ?? ?id: 1, ?? ?name: 'Tom' }
那么需要將參數(shù)轉(zhuǎn)換為JSON字符串,在使用encodeURI加密,需要注意的是通過路由跳轉(zhuǎn)的時候會自動解密一次,所以需要加兩次密
let param = { ? ? ??? ?id: 1, ?? ??? ?name: 'Tom' ? ? ? } ? ? ? param = encodeURI(JSON.stringify(param)) ? ? ? param = encodeURI(param) // 第二次加密 ? ? ? this.$router.push({path: `/record-index-city/${param}`,})
解密方式是使用decodeURI
let param = this.$route.params.param param = JSON.parse(decodeURI(param))
加密后效果:
vue路由加密傳參
此處用到的是UrlEncode編碼加密,首先創(chuàng)建一個UrlEncode.js,代碼如下
const UrlEncode = { ? ?//加密 ? ? encode(str) { ? ? ? ? return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, ? ? ? ? ? ? function toSolidBytes(match, p1) { ? ? ? ? ? ? ? ? return String.fromCharCode('0x' + p1); ? ? ? ? ? ? })); ? ? }, ? //解密 ? ? decode(str) { ? ? ? ? // Going backwards: from bytestream, to percent-encoding, to original string. ? ? ? ? return decodeURIComponent(atob(str).split('').map(function (c) { ? ? ? ? ? ? return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); ? ? ? ? }).join('')); ? ? } } export default UrlEncode
在main.js中引入,方便調(diào)用
import UrlEncode from './assets/js/UrlEncode.js'? Vue.prototype.$UrlEncode = UrlEncode;
我這邊用到的是通過路由的path進(jìn)行傳參,感覺加密的話用path傳比較好,同時也方便其它端在調(diào)用你頁面時,獲取參數(shù)。
傳參頁面
?this.$router.push({ ? ? ? ? path: "/PropertyDetails", ? ? ? ? query:{ ? ? ? ? ? key:this.$UrlEncode.encode(JSON.stringify({ ? ? ? ? ? ? type:'', ? ? ? ? ? ? id: '', ? ? ? ? ? ? mobile:'', ? ? ? ? ? ? productId: '', ? ? ? ? ? })) ? ? ? ? } ? ? ? });
接收頁面
let params = JSON.parse(this.$UrlEncode.decode(this.$route.query.key))
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue打包優(yōu)化時配置webpack的8大方案小結(jié)
vue-cli?生成的項目通常集成Webpack?,在打包的時候,需要webpack來做一些事情,這里我們希望它可以壓縮代碼體積,提高運(yùn)行效率,本文為大家整理了8大webpack配置方案,希望對大家有所幫助2024-02-02vue+element-ui表格自定義列模版的實現(xiàn)
本文主要介紹了vue+element-ui表格自定義列模版的實現(xiàn),通過插槽完美解決了element-ui表格自定義列模版的問題,具有一定的參考價值,感興趣的可以了解一下2024-05-05