前后端分离下载导出文件遇到的权限问题

Daming 2019-08-20
0条评论 1,012 次浏览
Daming 2019-08-200条评论 1,012 次浏览

在项目中 有一个将报表导出的需求
后台用 的thinkphp5.1
前端vue

具体实现参考另一篇文章:thinkphp5.1导出csv表格

做完后,前端这边下载文件只需要 使用 window.location.href 跳转一下就好

window.location.href=window.API_server.API_ADDRESS+'/export_csv?type=user';

问题来了,
在后端,我是通过中间件 对请求进行一个拦截, 获取到每个请求中 的请求头 Authorization 参数,Authorization中即是用户的token,通过token进行权限验证.前端直接跳转下载链接的话, 就无法携带这个token了. 那么这个下载的请求 会被拦截.

后来想到 将token 加到 url 参数上,像这样:

 window.location.href = window.API_server.API_ADDRESS + '/export_csv?type=user&startTime=' + startTime + '&endTime=' + endTime + '&token=' + encodeURIComponent(this.$store.getters.getOperatorInfo.token);

(我将token放在vuex中的),使用encodeURIComponent将token编码后传给后台,
后台中间件做一下修改,如果 请求的url中包含token 参数, 将token 从header 中获取的方式 改为从 url中获取,这样 就解决权限的问题啦

当然 直接使用cookies 也是可以的,但是我一直不怎么喜欢用cookies~~~~

1+

发表评论

电子邮件地址不会被公开。