php - 检查令牌是否有效
问题描述
我在我的 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
}
解决方案
我想建议的解决方案是使用lexik/jwt-bundle我在几乎所有我的前端身份验证项目中都使用它,例如您可以自定义默认响应(未找到 JWT 令牌/无效)以返回响应你渴望。您可以为您的目的创建匿名真或假路由我猜匿名应该是真的,即使您的令牌已过期,您将延长其生命周期。如果您想要一些见解,请对此答案发表评论,我会尽我所能提供
推荐阅读
- python - 在 Python 中使用正则表达式从字符串中提取数字
- html - 更改内容后如何保持相同的按钮大小?
- mysql - 从多行中获取数据到一行
- mysql - 如何编写查询以在 xml 页面中获取周数据。我的代码如下
- python - sqlalchemy func.group_concat 和数据的随机顺序
- ansible - Ansible:事实收集机制
- c# - 从 .net core 2.2 迁移到 .net core 3 是否为时过早?
- python - 为什么我的python代码中数组中的值在使用一次数组后变为0?
- loops - 在 `Cypress` 中打破 `.each` 循环
- python - 对 DecisionTreeClassifier 预测的信心