问题的主要原因就是,我后端接口加了一下注@PreAuthorize("hasAuthority('property:hardware')")需要在请求头中加入一些身份参数property:hardware,getToken()可以拿到
当前端使用组件el-upload时,我们请求的方式有两种,
1、是直接:action="url",url是我们后端的地址,但是这种请求方式需要额外加消息头信息:headers="getUploadHeader()",因为我们后端要求了,必须要消息头,并且消息头中要有property:hardware,所以我们:headers请求getUploadHeader()方法,对消息头进行拼接,然后就能请求我们的后端了
getUploadHeader() {
debugger
let headers = {};
if (this.$store.getters.token) {
headers["X-Token"] = "Bearer_" + getToken();
}
if (this.$store.getters.user.user) {
headers["userid"] = this.$store.getters.user.user.userid;
headers["username"] = this.$store.getters.user.name;
headers["displayname"] = encodeURIComponent(
this.$store.getters.user.user.displayName
);
}
if (this.$store.getters.user) {
if (this.$store.getters.user.currentRootOrganization) {
headers[
"customerId"
] = this.$store.getters.user.currentRootOrganization.nodeId;
}
if (this.$store.getters.user.currentStoreOrganization) {
headers[
"storeId"
] = this.$store.getters.user.currentStoreOrganization.nodeId;
}
}
headers["requestTime"] = new Date().getTime();
return headers;
},
2、再就是直接调用方法进行请求,方法如下:
//仪表计数导入
export function importData(file, orgId, createUser, createUserId){
return request.post(BASE_URL + '/import' )
}
由于公司已经对request处理,配置了拦截器,已经对所有的request添加了信息,有我们要的property:hardware
service.interceptors.request.use(
config => {
// do something before request is sent
if (service.loadingRequired) {
loadingInstance = Loading.service({ fullscreen: true })
}
// // mock
// setTimeout(() => {
// loadingInstance.close();
// }, 500);
if (store.getters.token) {
// let each request carry token
// ['X-Token'] is a custom headers key
// please modify it according to the actual situation
config.headers['X-Token'] = "Bearer_" + getToken()
}
if (store.getters.user.user) {
config.headers['userid'] = store.getters.user.user.userid
config.headers['username'] = store.getters.user.name
config.headers['displayname'] = encodeURIComponent(store.getters.user.user.displayName)
}
if (store.getters.user) {
if(store.getters.user.currentRootOrganization){
config.headers['customerId'] = store.getters.user.currentRootOrganization.nodeId
}
if(store.getters.user.currentStoreOrganization){
config.headers['storeId'] = store.getters.user.currentStoreOrganization.nodeId
}
}
config.headers['requestTime'] = new Date().getTime()
return config
},
error => {
// do something with request error
if (loadingInstance) {
loadingInstance.close
}
service.loadingRequired = true
console.log(error) // for debug
return Promise.reject(error)
}
)