Shopify如何实现用户保持登录状态及session永不过期
Shopify站点登录态持久化实现方案
Shopify原生客户登录session默认有效期为24小时,要实现长期保持登录状态、同时支持用户自主选择是否启用长效session避免过期,直接按以下步骤配置即可,不需要额外开发复杂的认证逻辑。
- 全局session基础配置
先进入Shopify后台「设置 > 客户账户」,找到Session duration配置项:如果要做「默认长效登录、用户可主动关闭」的逻辑,直接把全局基础session时长设置为你需要的长效周期(Shopify最长支持365天);如果要做「默认短周期、用户勾选后长效」的逻辑,就把基础时长保留默认24小时,单独给勾选记住登录的用户配置延长时长。 - 登录表单添加可选控件
打开主题内的客户登录模板,一般路径为sections/customer-login.liquid,在登录提交按钮上方添加复选框控件,name属性固定使用remember即可对接Shopify原生的session延长逻辑,不需要额外写参数处理、cookie存储的代码:
<div class="login-form__field"> <input type="checkbox" id="remember-me" name="remember" value="true" {% if form.errors.size > 0 and form.remember %}checked{% endif %} > <label for="remember-me">保持登录状态,避免频繁过期</label> </div>
表单提交时只要携带remember=true参数,Shopify会自动将当前用户的session有效期匹配为你预设的长效时长,浏览器重启、标签页关闭都不会触发登录态失效。
- 不同需求场景的适配
- 要做默认持久化:直接给上面的checkbox加
checked默认属性,把文案调整为「公共设备使用请取消勾选,避免账号泄露」即可,用户取消勾选提交后,session会在24小时/浏览器关闭后自动失效 - 要做用户主动选择才持久化:去掉checkbox的默认checked属性,保持默认未选中状态即可
- 要做默认持久化:直接给上面的checkbox加
- 避坑提示
- 不要私自通过前端脚本写入认证类cookie模拟持久登录,Shopify的安全策略会拦截非官方标记的认证凭证,大概率出现登录态随机失效的问题
- 如果站点接入了Multipass、第三方SSO登录插件,记得在插件配置中开启
remember参数透传,否则自定义复选框的参数会被插件拦截,无法触发长效session逻辑 - 用户主动点击退出登录时,Shopify会自动清空当前设备的所有session记录,不需要额外编写清理逻辑
以上逻辑同时兼容经典版客户账号、新版Customer Account API体系,修改完模板后清空主题缓存即可生效,不需要额外部署。
内容的提问来源于stack exchange,提问作者Manuel Lopez
相关产品推荐
相关产品推荐

