为何下载不能绕过材料模块
文件存放于上传目录中。若 Nginx 将该目录以静态资源方式公开,则知悉文件名即可直接下载,此前的 404 校验将失去意义。因此该目录仅挂载到 api 容器,下载请求仍须先经过认证模块与班级归属校验,通过后才由 Go 将文件字节写回响应体。
列表查询携带会话中的班级条件;按标识打开详情时,先取出对应数据行,再校验其是否属于本班。跨班级访问与记录不存在两种情况,对外均返回同构的 404 响应。
文件下载沿用同一套校验,不得仅凭掌握存储路径即可获取文件。学生调用上传接口应被拒绝,且该拒绝发生在服务端,不依赖于页面是否渲染了相应按钮。
认证模块已将班级写入本次请求上下文。材料模块后续存在两条不同路径,二者不可混为一谈。
文件存放于上传目录中。若 Nginx 将该目录以静态资源方式公开,则知悉文件名即可直接下载,此前的 404 校验将失去意义。因此该目录仅挂载到 api 容器,下载请求仍须先经过认证模块与班级归属校验,通过后才由 Go 将文件字节写回响应体。