我在项目中实施了Laravel Passport,除了存储令牌的cookie到期时间外,一切正常(仅1小时(。
我的项目包括一个为前水疗应用程序(VUE(的后端Laravel 5.8 API(带有Laravel Passport(。
我应用程序的用户可以使用带有vue组件的页面成功登录,该页面与用户凭据一起提出发布请求,如果成功完成登录,则将用户重定向到新的URL(App Home( - 此重定向是创建" laravel_token" cookie的get请求 - 由CreateFreshApiToken
中间件创建。
从现在开始,用户可以通过Ajax呼叫获得应用程序内部的任何地方,并且应用程序组件所需的所有数据(Laravel将注意到这些AJAX调用中的cookie" laravel_token"的存在用户使用该cookie中存在的JWT(。
我的问题是:
用户登录时创建的" laravel_token" cookie的生命只有1小时。因为这是一个水疗中心,所以这个cookie永远不会更新(由新小时的新小时交换(...因此,一小时后,当需要向后端Laravel服务器执行新的Ajax请求时,它将收到未经身份验证的响应 - 这是有道理的,因为" laravel_token" cookie已过时。
您如何处理此问题?
我知道,我可以通过在此cookie到期之前对页面的完整刷新/重新加载来刷新此cookie,但这不是用户体验的好解决方案。
我无法打电话给这个cookie刷新这个cookie,因为这是一个水疗中心,我没有客户端_id,这是客户端的秘密……而且因为不仅此cookie是httponly,而且还在由Laravel加密 - 因此,我无法使用JS。
唯一的解决方案会增加此cookie的寿命(例如,从1小时到1年(?您看到这个问题吗?我在哪里可以设置此cookie到期时间?我需要扩展ApiTokenCookieFactory
类吗?
我希望用户被登录,直到他故意执行注销请求或Access_Token到期(在我的情况下,我使用的是Laravel Passport默认值,是长期以来的1年寿命(。
如果有人可以帮助我解决这个问题。
如果您看到我没有做正确的方式,我也很感谢您的评论。
非常感谢!
根据 ApiTokenCookieFactory
, laravel_token
cookie的到期时间正在从会话生命周期值中获得。好吧,只需更改.env
中的SESSION_LIFETIME
的值