如何在Payload CMS中无需认证调用接口?设置disableLocalStrategy仍报错
解决Payload CMS文章列表接口认证问题
问题原因
disableLocalStrategy 这个参数只是用来禁用该集合的本地用户名密码登录逻辑,不会自动开放API的访问权限。Payload默认所有集合的API接口都需要认证,所以你就算关了本地策略,未登录的请求照样会被拦截。
正确解决方案
要让文章列表能被匿名访问,得在集合配置里手动设置access权限规则,具体代码修改如下:
const Posts: CollectionConfig = { slug: "posts", auth: { disableLocalStrategy: true, }, admin: { defaultColumns: ["title", "text"], }, // 新增权限配置 access: { // 允许所有匿名用户读取文章列表 read: () => true, // 写操作权限可以按需设置,比如只让管理员操作 create: ({ req }) => req.user?.role === 'admin', update: ({ req }) => req.user?.role === 'admin', delete: ({ req }) => req.user?.role === 'admin', }, fields: [...], }
进阶优化(可选)
如果只希望开放已发布的文章,还可以给read规则加过滤条件:
read: ({ req }) => { // 管理员能看所有文章,匿名用户只能看已发布的 if (req.user?.role === 'admin') return true; return { status: { equals: 'published' } }; }
内容的提问来源于stack exchange,提问作者victor zadorozhnyy
相关产品推荐
相关产品推荐

