首页 > 解决方案 > 检查令牌是否有效

问题描述

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

现在我的应用程序有了中心点,所有请求都通过这个函数传递。但是将来当我有其他请求不通过此函数传递时,我必须创建下一个函数等...并且我正在搜索放置 isTokenValid 代码的地方,我正在考虑“在对 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

}

标签: phprestsymfonytoken

解决方案


我想建议的解决方案是使用lexik/jwt-bundle我在几乎所有我的前端身份验证项目中都使用它,例如您可以自定义默认响应(未找到 JWT 令牌/无效)以返回响应你渴望。您可以为您的目的创建匿名真或假路由我猜匿名应该是真的,即使您的令牌已过期,您将延长其生命周期。如果您想要一些见解,请对此答案发表评论,我会尽我所能提供


推荐阅读