gpt4 book ai didi

javascript - Vue.js 拦截器

转载 作者:数据小太阳 更新时间:2023-10-29 04:54:50 33 4
gpt4 key购买 nike

如何在 vue.js 中使用 拦截器?所以在每个请求/响应之前,它应该首先去拦截器。我已经搜索了很多,但找不到相关的好文档。

我想像这样使用 JWTAuth:

(function (define) {
'use strict'

define(function (require) {

var interceptor

interceptor = require('rest/interceptor')

/**
* Authenticates the request using JWT Authentication
*
* @param {Client} [client] client to wrap
* @param {Object} config
*
* @returns {Client}
*/
return interceptor({
request: function (request, config) {
var token, headers

token = localStorage.getItem('jwt-token')
headers = request.headers || (request.headers = {})

if (token !== null && token !== 'undefined') {
headers.Authorization = token
}

return request
},
response: function (response) {
if (response.status && response.status.code === 401) {
localStorage.removeItem('jwt-token')
}
if (response.headers && response.headers.Authorization) {
localStorage.setItem('jwt-token', response.headers.Authorization)
}
if (response.entity && response.entity.token && response.entity.token.length > 10) {
localStorage.setItem('jwt-token', 'Bearer ' + response.entity.token)
}
return response
}
})

})

}(
typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require) }
// Boilerplate for AMD and Node
))

但我不知道如何在每个请求/响应之前进行拦截。 (我使用 Laravel 5.2)。

最佳答案

全局配置示例:

Vue.http.interceptors.push({

request: function (request){
request.headers['Authorization'] = auth.getAuthHeader()
return request
},

response: function (response) {
//console.log('status: ' + response.data)
return response;
}

});

request 用于传出流量,response 用于传入消息

也可以在vue组件中进行本地配置。

编辑 - 由于语法已经改变,现在它应该看起来像这样:

Vue.http.interceptors.push((request, next)  => {
request.headers['Authorization'] = auth.getAuthHeader()
next((response) => {
if(response.status == 401 ) {
auth.logout();
router.go('/login?unauthorized=1');
}
});
});

关于javascript - Vue.js 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37228087/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com