前后端分离下载导出文件遇到的权限问题
在项目中 有一个将报表导出的需求
后台用 的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~~~~
版权声明:
作者:东明兄
链接:https://blog.crazyming.com/note/946/
来源:CrazyMing
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论