您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)利用nuxt.js中間件怎么實現(xiàn)攔截權(quán)限判斷,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
項目環(huán)境
"element-ui":"^2.3.4",
"flyio":"^0.5.2",
"js-cookie":"^2.2.0",
"nuxt":"^1.4.0",
一:首先登錄頁面
在登錄頁面script中引入
import Cookie from 'js-cookie' //npm install js-cookie --save
在script里加上
data(){ return{ redirectURL:'/' } }, mounted() { let rediretUrl = this.$route.query.ref; if (rediretUrl){ this.redirectURL = rediretUrl } }
接著在methods里面編寫一個 submitLogin的方法
submitLogin(ev) { var _this = this; this.$refs.ruleForm2.validate((valid) => { if (valid) { _this.logining = true var sendData = { username: _this.ruleForm2.account, password: _this.ruleForm2.pass, is_remember: _this.isRemember }; //登錄操作 _this.$https.post('login/index', sendData).then(res => { if (res.status == 1) { //將服務(wù)端的token存入cookie當(dāng)中 Cookie.set('token', res.data.token) //返回上一頁 _this.$router.push(_this.redirectURL) }else{ _this.$message.warning(res.msg) } }) } else { return false; } }); },
二:nuxt中間件middleware編寫權(quán)限攔截
新建一個userAuth.js,目錄結(jié)構(gòu)如下
代碼如下
import utils from '~/utils/utils' export default function ({route, req, res, redirect}) { let isClient = process.client; let isServer = process.server; let redirectURL = '/login'; var token, path //在服務(wù)端 if (isServer) { let cookies = utils.getcookiesInServer(req) path = req.originalUrl; token = cookies.token ? cookies.token : '' } //在客戶端判讀是否需要登陸 if (isClient) { token = utils.getcookiesInClient('token') path = route.path; } if (path) { redirectURL = '/login?ref=' + encodeURIComponent(path) } //需要進行權(quán)限判斷的頁面開頭 if (!token) { redirect(redirectURL) } }
utils.js里面的方法
import Cookie from 'js-cookie' export default { //獲取服務(wù)端cookie getcookiesInServer:function (req) { let service_cookie = {}; req && req.headers.cookie && req.headers.cookie.split(';').forEach(function (val) { let parts = val.split('='); service_cookie[parts[0].trim()] = (parts[1] || '').trim(); }); return service_cookie; }, //獲取客戶端cookie getcookiesInClient:function (key) { return Cookie.get(key) ? Cookie.get(key) : '' } }
到這里,我們的中間件,權(quán)限判斷依據(jù)完成了
三:運用到項目中
在項目中。例如,用戶信息設(shè)置頁面,需要進行是否登錄判斷
pages/user/setting.vue
我們在頁面中運用剛剛編寫的userAuth中間。
middleware: 'userAuth',
上述就是小編為大家分享的利用nuxt.js中間件怎么實現(xiàn)攔截權(quán)限判斷了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。