vue登陆、时间样式、文件上传常见问题

vue登陆、时间样式、文件上传常见问题

路由导航守卫控制访问权限

1
2
3
4
5
6
7
8
9
10
11
//为路由对象添加beforeEach导航守卫
//to要访问的地址,from从哪里来,next放行函数
router.beforeEach((to,from,next)=>{
//如果要访问登陆页
if(to.path == '/login') return next();
//从sessionStorage中获取保存的token值
const tokenStr = window.sessionStorage.getItem('token');
//没有token,强制跳转到登陆页
if(!tokenStr) return next('/login');
next();//如果有直接放行
})

退出

直接删除token就可以

1
2
window.sessionStorage.clear()
this.$router.push('/login')

通过接口获取数据

通过axios请求拦截器添加token,保证拥有获取数据的权限

1
2
3
4
5
6
//请求拦截器
axios.interceptors.request.use(config=>{
//为请求添加token验证的字段Authorization
config.headers.Authorization = window.sessionStorage.getItem('token');
return config;
})

记录当前的操作

某些时候需要记住之前的操作,也可以使用sessionStorage

处理时间显示样式

  1. 先定义一个全局的时间过滤器
1
2
3
4
5
6
7
8
9
10
Vue.filter('dataFormat',function(originVal){
const dt = new Data(originVal);
const y = dt.getFullYear();
const m =(dt.getMonth()+1+'').padStart(2,'0');//两位数,不足两位补0
const d =(dt.getDate()+'').padStart(2,'0');

const hh =(dt.getHours()+'').padStart(2,'0');
const mm =(dt.getMinutes()+'').padStart(2,'0');
const ss =(dt.getSeconds()+'').padStart(2,'0');
})
  1. 使用过滤器
1
2
3
<template slot-scope='scope'>
{{scope.row.time|dataFormat}}
</template>

ElementUI上传组件问题

组件中的action属性为上传到服务器的路径,注意这个路径必须是全路径(如:http:127.0.0.1:8000/api/img),如果是相对路径则默认会上传到前端项目中的相对路径下。

在上传的时候自己封装了ajax而没有使用自定义的axous,所以不会携带token信息。此时需要在其headers属性中增加头信息。

1
2
3
4
5
6
<el-upload :headers="headerObj"></el-upload>

//在data中增加
headerObj:{
Authorization:window.sessionStorage.getItem('token');
}
作者

步步为营

发布于

2024-05-08

更新于

2025-03-15

许可协议