检查令牌是否有效

时间:2020-02-21 09:58:04

标签: php rest symfony token

我在SYMFONY 4.3应用程序中使用了第三方REST API。我的应用程序需要在请求之前检查令牌是否有效。什么时候是检查令牌是否有效以及在symfony请求之前尝试刷新令牌的最佳位置? symfony中是否存在事前请求过滤器?当我可以提取所有请求时是否存在全局对象,并且如果标头为401,我可以执行特定操作

现在,我在应用程序中有了中心点,所有请求都通过此函数传递。但是在将来当我没有其他请求通过此函数传递时,我必须进行下一个函数等...并且我正在搜索放置isTokenValidid代码的地方,我正在寻找诸如“在对API的任何请求之前调用此函数”的地方

我应该使用它吗? https://symfony.com/doc/current/event_dispatcher/before_after_filters.html#token-validation-example

public function prepareRequest($method, $endPoint) {
.........

// Users can have many tokens connected to different accounts on third party app
 $apiTokens = $user->getApiTokens();

 /** @var ApiToken $apiToken */
 foreach ($apiTokens as $apiToken) {
    if ($this->isTokenValid($apiToken)) {
       ............. make request with specifed apiToken
}


 public function isTokenValid(ApiToken $token): bool
{
  if token is not valid return false
  if token date expired try to refresh token
  if token is not valid or refreshing token fails return false else return true

}

1 个答案:

答案 0 :(得分:2)

我建议的解决方案是使用lexik/jwt-bundle,我几乎在所有我的前端身份验证项目中都使用它,例如,您可以自定义默认响应(找不到JWT令牌/无效)以返回您想要的响应。您可以根据自己的目的创建匿名的true或false路由,我想即使您的令牌已过期,您也可以延长匿名令牌的寿命,它也应该是true。如果您希望获得一些见解,请对此答案发表评论,我会尽力提供