我正在尝试使令牌无效(或删除)JWT
但我无法做到这一点。首先我做了类似这个答案所说的事情Laravel JWT-auth 身份验证的注销问题:
JWTAuth::invalidate(JWTAuth::getToken())):
但我收到这个错误:
非静态方法 Tymon\JWTAuth\JWT::invalidate() 不应静态调用,假设 $this 来自不兼容的上下文
然后我做了这样的事情:
use Illuminate\Http\Request;
use Tymon\JWTAuth\JWTAuth;
class AuthController extends Controller
{
protected $jwt;
public function __construct(JWTAuth $jwt)
{
$this->jwt = $jwt;
}
public function invalidateToken(Request $request)
{
$this->jwt->parseToken()->invalidate();
return response()->json(array('message' => 'log out'));
}
...
}
但我仍然可以将令牌用于另一个请求,并且无法删除或使其无效。
我做错了什么导致令牌失效?
Edit:
我从这里阅读了另一个问题,并从 JWT 的存储库中发布了问题github(这是我正在使用的库)我按照所有示例使令牌无效或删除,但我仍然无法删除或使其无效。
如果 .env 文件中的 cache_driver 设置为数组以外的其他值,则黑名单功能将起作用。
将其更改为文件对我有用。但是,在我的特定情况下,我也使用 Entrust,这会在将 cache_driver 设置为文件或数据库时导致问题。因此,不得不放弃黑名单/无效功能。
希望这对某人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)