Next.js访问/profile无token cookie时如何重定向到/login页面
问题结论
你当前的配置不正确,无法实现需求。
错误原因
- 你编写的
has配置规则作用是:匹配**请求中存在key为token的cookie,且该cookie的值为字符串undefined**的场景才触发重定向 - 你需要的逻辑是「请求中不存在
tokencookie时重定向」,二者逻辑完全不符,正常用户未登录时根本不会携带tokencookie,当前规则不会生效
正确调整方案
直接将has字段替换为Next.js redirects原生支持的missing字段,去掉value配置即可,missing字段的作用就是匹配「不存在指定条件」的请求:
module.exports = { async redirects() { return [ { source: '/profile', // 匹配不存在token cookie的请求 missing: [ { type: "cookie", key: "token" } ], permanent: false, destination: '/login', }, ] }, }
扩展补充
- 如果需要覆盖
/profile下的所有子路由(比如/profile/settings、/profile/order等),可以将source值改为/profile/:path* - 现有配置的
permanent: false不需要调整,返回的307临时重定向不会被浏览器缓存,适配登录态动态变化的场景
内容的提问来源于stack exchange,提问作者Ibrohim Alimuhammedov
相关产品推荐
相关产品推荐

