部署后如何在无痕/Brave浏览器中启用Lucia Cookie认证?
核心问题排查与修复步骤
修正Domain配置
你之前留空domain是关键问题所在。对于www.examplesite.com,正确的domain配置应为".examplesite.com"(带前置点,支持主域名下所有子域名共享Cookie),或者直接指定"www.examplesite.com"。留空domain时,浏览器会将Cookie绑定到当前请求的完整域名,若负载均衡与Cloud Run服务的域名存在差异(比如Cloud Run使用默认.run.app域名),Cookie会被判定为第三方而被拦截。
调整后的配置示例:sessionCookie: { expires: false, attributes: { sameSite: 'none', secure: true, path: '/', domain: '.examplesite.com' } },若设置
".examplesite.com"仍有问题,尝试直接指定"www.examplesite.com",确保与访问的站点域名完全匹配。确认HTTPS与转发头配置
sameSite: 'none'必须搭配secure: true使用,且服务必须运行在HTTPS环境下。由于流量通过负载均衡转发到Cloud Run,需确保负载均衡正确传递X-Forwarded-Proto: https请求头,让Lucia识别当前环境为HTTPS,避免secure属性失效。适配浏览器隐私拦截规则
Brave和Chrome无痕模式默认严格限制第三方Cookie。如果Cloud Run服务的域名与用户访问的www.examplesite.com不一致,Cookie会被判定为第三方而拦截。解决方式:- 确保负载均衡转发请求时,将
Host头设置为www.examplesite.com - Cookie的domain必须与
Host头的域名完全匹配
- 确保负载均衡转发请求时,将
调整Cookie有效期设置
当前设置expires: false会生成会话Cookie,无痕模式下这类Cookie的生命周期会被严格限制。尝试改用maxAge设置持久Cookie,比如:sessionCookie: { maxAge: 60 * 60 * 24 * 7, // 7天有效期 attributes: { sameSite: 'none', secure: true, path: '/', domain: '.examplesite.com' } },用开发者工具验证
打开浏览器开发者工具的Application标签,查看Cookies列表:- 检查
auth_session是否存在,是否被标记为Blocked - 查看拦截原因(比如第三方Cookie、domain不匹配等),针对性调整配置
- 检查
是否需要更换认证系统?
完全不需要。Lucia的Cookie认证方案成熟且符合现代浏览器标准,问题仅出在配置细节与浏览器隐私规则的适配上。按照上述步骤调整后,即可解决Brave和Chrome无痕模式下的认证问题。
内容的提问来源于stack exchange,提问作者Caden The Yak

