KeystoneJS 6如何配置支持匿名访问的静态文件服务?
Keystone 6 匿名静态文件服务配置说明
Keystone 6 原生支持对外提供public目录的匿名静态资源服务,出现登录重定向是因为默认的全局会话校验规则拦截了静态资源路径,按以下步骤配置即可解决:
- 步骤1:调整storage存储配置
本地存储图片的storage配置项中新增isPublic: true,声明该存储桶下的资源为公开可访问,示例配置如下:// keystone.ts 配置文件中storage部分 storage: { my_images: { kind: 'local', type: 'image', generateUrl: (path) => `/public/images${path}`, storagePath: 'public/images', // 新增公开配置 isPublic: true, } } - 步骤2:配置会话校验排除规则
会话配置中添加静态资源路径到排除列表,避免会话中间件拦截匿名请求:// keystone.ts 配置文件中session部分 session: statelessSessions({ secret: process.env.SESSION_SECRET, // 匹配所有静态资源路径,无需校验登录状态 exclude: ['/public/**', '/images/**'], }) - 步骤3(可选):手动挂载静态资源目录
如果上述配置后仍有访问拦截,可以通过Express扩展配置手动挂载public目录:import express from 'express'; // keystone.ts 配置文件中server部分 server: { extendExpressApp: (app) => { app.use('/public', express.static('public')); } }
注意配置的静态资源路径要和storage中generateUrl返回的路径前缀保持一致,避免出现路径匹配错误,配置完成后重启Keystone服务即可生效
内容的提问来源于stack exchange,提问作者ConductedClever
相关产品推荐
相关产品推荐

