我正在使用password
授权类型。根据此授权类型的性质,客户端完全受API控制,在我的情况下,它们共享相同的所有者。
每个客户端都将由API所有者添加到API中,方法是手动发布到oauth/v2/token
端点,检索访问令牌,然后手动将其放入客户端数据库中。
使用API服务的客户端始终需要API的完全可用性。如果他们的访问令牌过期,他们的API调用将返回401 Unauthorized
响应。因此,在API所有者使用刷新令牌手动回发到oauth/v2/token
端点,收到新的访问令牌并更新客户端中的新客户端访问令牌之前,API将无法使用。 ; s外部数据库,供他们使用。
我的问题: 理想情况下,我希望Access Token永不过期。这是可能吗?我查看了捆绑中的代码,但似乎没有。如果没有,其他人如何解决这个问题,让令牌能够为客户端无缝刷新?
答案 0 :(得分:0)
我不知道这是否真的是一个答案或更多的评论,因为虽然它适用于我,但我觉得它远非“最佳实践”。但我没有足够的声誉来发表评论。反正:
我所做的只是在access_token表中手动将'expires_at'
设置为null。在phpmyadmin中手动完成它只是因为我需要处理非常少的客户端和令牌。
现在,如果要“自动化”它,请挂钩到AccessToken实体上的pre_persist事件,并在保持之前将'expires_at'
设置为null。我想这应该有用。
“最佳做法”可能是在客户端应用程序中处理令牌刷新。也就是说,首先连接到您的API,如果是401响应(未授权),请刷新令牌并重试连接。出于性能原因,我不想尝试这种方法。
答案 1 :(得分:0)
在FOSOAuthServerBundle配置中,您可以将令牌生存期更改为您想要的任何值。