vue實現登入和個人資訊元件展示
最近在寫一個重構node社群的小專案,碰到了登入的問題,實現思路如下:
1.獲取使用者表單資訊,使用axios提交,提交成功後,把資料存在cookie,以便後續操作。
2.其中有個人資訊的頁面展示,獲取cookie資訊,判斷使用者是否登入,如果登入則顯示內容,未登入則跳轉到登入頁面,所以個人資訊的頁面可以使用路由守衛
搜尋資料時有看到這種寫法,就是經過判斷後去改變<router-link>的動態路由來決定跳轉到哪個元件,感覺稍顯麻煩。
3.退出操作,清除cookie
可以把操作cookie的程式碼放到一個單獨的src/utils/cookie.js檔案,utils這個資料夾可以放一些工具類的檔案
cookie.js
//獲取cookie
export function getCookie(name){
var cookieName = encodeURIComponent(name) + "=",
cookieStart = document.cookie.indexOf(cookieName),
cookieValue = null;
if (cookieStart > -1){
var cookieEnd = document.cookie.indexOf(";", cookieStart);
if (cookieEnd == -1){
cookieEnd = document.cookie.length;
}
cookieValue = decodeURIComponent(document.cookie.substring(cookieStart
+ cookieName.length, cookieEnd));
}
return cookieValue;
}
//設定cookie
export function setCookie(name, value, expires, path, domain, secure) {
var cookieText = encodeURIComponent(name) + "=" +
encodeURIComponent(value);
if (expires instanceof Date) {
cookieText += "; expires=" + expires.toGMTString();
}
if (path) {
cookieText += "; path=" + path;
}
if (domain) {
cookieText += "; domain=" + domain;
}
if (secure) {
cookieText += "; secure";
}
document.cookie = cookieText;
}
//刪除cookie
export function delCookie(name, path, domain, secure){
setCookie(name, "", new Date(0), path, domain, secure);
}
後面發現vue有一個關於操作cookie的外掛js-cookie,安裝一下就可以使用了
例如
import Cookie from 'js-cookie'
const TokenKey='Admin-Token'
export function getToken(){
return Cookie.get(TokenKey)
}
export function setToken(token){
return Cookie.set(TokenKey,token)
}
export function removeToken(){
return Cookie.remove(TokenKey)
}
登入元件的login方法
methods:{
login(){
axios.post('api/v1/accesstoken',{
accesstoken:this.info
})
.then(
res=>{
const info=this.info;
setCookie('accesstoken',this.info)
setCookie('username',res.data.loginname)
setCookie('userid',res.data.id)
this.$router.push( {name:'myinfo',params:{user:res.data.loginname} } )
}
)
.catch(
err=>{
alert(err)
}
)
}
}
個人資訊元件顯示與否的判斷
beforeRouteEnter(to,from,next){
if(to.meta.requireAuth){ //此元件需要登入
if(getCookie('accesstoken')==null){
next({
path:'/login'
})
}else{
next()
}
}else {
next(); //否則不需要登入,直接進入路由
}
},
退出操作
//退出登入
logout(){
delCookie('userid') //名字要對應getCookie的值
delCookie('accesstoken')
delCookie('username')
this.$router.push({
path: "/login"
})
}
其他操作
例如點贊和評論等功能,也要判斷使用者是否登入
相關文章
- VUE實現評分效果和不同型別分數展示效果元件Vue型別元件
- 致敬 React: 為 Vue 引入容器元件和展示元件ReactVue元件
- vue2專案中調取登入介面登入以後獲取個人資訊以後,儲存在哪裡,怎麼在不同的頁面展示想要的資訊?Vue
- Vue+Express實現登入,登出VueExpress
- 用Vue實現一個掘金沸點圖片展示元件Vue元件
- 創新實訓(九) 註冊、登入、找回密碼功能和個人資訊管理密碼
- Express實戰個人訂閱號實現網站登入Express網站
- vue實現簡訊驗證碼登入Vue
- vue3 + vite實現非同步元件和路由懶載入VueVite非同步元件路由
- vue實現單點登入的N種方式Vue
- express+vue+mongodb+session 實現註冊登入ExpressVueMongoDBSession
- vue通過vue-router攔截實現登入驗證Vue
- jwt加meta元資訊實現登入後校驗JWT
- vue particles.js 登入背景實現粒子動效VueJS
- Vue.js實現可配置的登入表單Vue.js
- 翻譯:展示元件和容器元件元件
- Java實現--登入和註冊案例(把使用者資訊存進集合)Java
- vue 個人積累(元件,工具)Vue元件
- uniapp 實現個人資訊的修改APP
- vue實現autoComplete元件Vue元件
- vue12-ElementUI tree元件懶載入的實現VueUI元件
- Vue學習10_Vue實現簡易的切換登入方式Vue
- vue+canvas如何實現b站萌系登入介面VueCanvas
- vue-admin-template 學習筆記 登入實現Vue筆記
- C#三種模擬自動登入和提交POST資訊的實現方法C#
- Vue.js 實現使用者登入退出和 e2e 測試Vue.js
- vue 實現tab切換動態載入不同的元件Vue元件
- 02-個人部落格筆記-登入註冊介面的實現筆記
- java實現微信登入Java
- Node.js+Mysql+Vue+ElementUI 實現登入註冊登出功能Node.jsMySqlVueUI
- Vue.js實現一個SPA登入頁面的過程Vue.js
- 用go封裝和實現掃碼登入Go封裝
- PHP如何實現登入認證和鑑權PHP
- 純js實現 vue 元件 與 vue 單檔案元件對比JSVue元件
- sap入門--配置個人資訊
- 個人作業登入+註冊
- Vue.js + element-ui + express + mongoDB 實現註冊登入功能Vue.jsUIExpressMongoDB
- 手把手實現圖片懶載入+封裝vue懶載入元件封裝Vue元件