跳到主要内容
弗美科技
服务案例

红帆生物官网,资料下载按角色放行

红帆生物官网改版,产品资料分公开、经销商、内部三档,下载按角色放行。没上复杂权限系统,文件表加一列 level,登录态带角色,Nginx 用 X-Accel-Redirect 藏住真实路径。每个下载留了日志:谁、几点、哪份,能按月份筛,导出给市场部核。

2021年12月24日官网建设权限下载

官网改版,产品页、新闻页都好说,麻烦在「资料下载」。

三档资料

客户那边的产品资料分三类:公开的产品彩页谁都能下;经销商价目表、检测报告只给签了协议的经销商;还有一批内部培训材料只给自家员工。以前的做法是把文件放在一个网盘里,发链接,链接转发出去就收不回来。

我们没上完整的权限系统。文件表里加了一列 level,值 0、1、2 对应三档;用户表里加 role,登录后写进 session。下载请求先过 PHP,比对 level 和 role,不够就回一句「联系客户经理开通」,不报 403,免得看着像系统坏了。

真实路径不暴露

文件本身不放在 web 根目录,挪到 /data/files 下面。PHP 校验通过后不自己读文件吐给浏览器,而是回一个 X-Accel-Redirect 头,让 Nginx 去内部路径取。这样浏览器里看不到真实存放位置,也绕不过校验直接猜文件名。

有个小坑:Nginx 里那条内部 location 要标 internal,忘了标的话外部能直接访问,等于白做。上线前拿 curl 试了一遍,确认直接请求返回 404。

下载日志

每次下载写一条:user_id、file_id、时间、IP。一共 4 个字段,不多。市场部每月导一次,按月份筛,看哪份资料被下得多、哪些经销商账号一直没动过。

第一版日志里没记文件名,只记了 file_id,导出后还得回查一次表,被吐槽了。第二版直接把文件名冗余进日志,查起来快,代价是文件改名后历史日志对不上,这个我们认了。

上线

12 月 24 号上午切的。当天下午有个经销商打电话说打不开价目表,查了下是账号 role 还没从旧系统同步过来,手动改一条就好。这样的电话后来又来了 3 个,都是同一批账号,第二天批量补完就没了。

年底客户那边做复盘,市场部最常导出的不是「下载排行」,是「哪些账号从没登录过」。那份名单他们拿去挨个打电话,跟我们没关系了。

商务咨询 · 免费初步沟通

需要针对你的场景给个建议?

把业务背景和当前系统情况告诉我们,我们会给出可执行的思路。

在线留言

周一至周五 9:00–18:00 · 工作日 9:00–18:00 响应,留言会在一个工作日内回复。

商务微信
商务微信二维码

扫一扫,加商务微信咨询服务与方案报价

或填写需求表单