Sha*_*aun 5 php access-token laravel laravel-passport
我使用laravel passport和密码授予模式,我发现它生成的访问令牌很长,像这样:
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjRmOTlkNDI2ZmIxN2I5OGVmNzExYzMyOGQ2YzMwODBhOGY4OGVjYWI4Yjg3Zjg2MmFkNWFlNGI5MzdiYjg0MGQ3MDk2NWI2OWY4NDk3MTE0In0.eyJhdWQiOiIyIiwianRpIjoiNGY5OWQ0MjZmYjE3Yjk4ZWY3MTFjMzI4ZDZjMzA4MGE4Zjg4ZWNhYjhiODdmODYyYWQ1YWU0YjkzN2JiODQwZDcwOTY1YjY5Zjg0OTcxMTQiLCJpYXQiOjE0ODk0NDAzODEsIm5iZiI6MTQ4OTQ0MDM4MSwiZXhwIjoxNTIwOTc2MzgxLCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.XEY0vMoUt6Z9cWMkELQhfcaC2uab8odQLmIVTh8YWULSYOPuw4vpTDFurgU2vflM8-5PYuIIOnw8-8CQVZvetkYLpp2r0GqdNPIcCwlZNh9zRFLLigJ1vm4GKsbGozoDieR9FBpvQ2K9gFM0V4kwjSwx74fdlC1imC1rZ8qRYy5e1zctrMSrVcGcT5F4PTm4DdTN50IRcsOIJK9T6Wgec-iYmey0-xKg0UQroCF6rZUtC0VlH8XwhW_1QfrCl7dkKIcEbWi4pgzDpwrLMZgLAQpPktCP2G9SujC99e7M_L3C8Y647enwUQSTKtp6xNyTyyHSqS0NAxU4U0TFTICMPH5D_L_WaTeBCLS3MdwM3cmTQdkjdXjljjurHld3yEvVemo7oAr2Wb_HOC1uFET0ndeVGI1ZhgM-AuUBy1dJrV4a0iyUIiVtO12LadFIK2m9h0YQlawN1me_HQy6FxdBQuMJ3WIuR3Mwp79RHkoYKFQGvfxTTK8N0emZzmLl5rODp6n7I1UKDb_g7weHdmFP2paTJCApikIXidYA-QXa1i2qMfCwB7gF_kqBvrOyL29wFFRBc_ACRA-0I8iEhZ18vF7htKkPgWoYyPzBKHjVJ4vrxV_VxbGcszIC5byAJKcmpcXEOnFXkFV7NF-tOb___hw9THTjYQmznM1OS__U8zA",
"refresh_token": "RXFyjx21XaLKgkOXa5zZyVbhRqXDsRZbfsFZmxst4Un0+VWtl0xTn/jIOPzApdqFFoTBCH08Ytjxf6SlcEOIUuHhN5+V7wuun/nFCuKIoC2T1xg9Ny2KkzRq0IF+bSBgtZ5QXfu+ILkCSZ/uh39rRxpoO4aqcnJp2Bvj5wuVcFra2nnPCu/Rfs+AN7MA5H8WgzfLmsIFsh3/rtzU4KboFR0rQE4MrDecrJCmCjvAJS52LLdFhDnNi/KdjhxBXY7jpgXZF+HOLAribGPn9COoC7B9zGoYHA3zaOMopsJ+NaRTHsuf2VbXlrQ4eXME5XVB4+TpgU8LGipK1jv5Ndhfu/VJaxgRk94VEuAcYu4vWUEdNl5Y4sRPDSlIpwjnXxdiiAUuNnvbrUaRD/qStJmmzQiWe7M07qVTHp4PNrVOVhjZkIsFMWoMsRHWtDu0eRbde3tBOhIWUCwxndp9Ma9DlSwuq6jmhv/mi62QboYjgZrWJAqLSIeP13mRyH0kNR4LCauCpiXgaPPTywBBfYpEIn34DQeo9QQfvnnut9ky8hRgniQjhGbvgeyIOS7WgmDR0Wmbt0jwLY5MWl5WuyhAJztQPnt0sTLxWzey0ZCRC5DWMSzt/g8cTL7cfjCxPYYdLCsAYE6eXTEaA3zZLre2GnBJwwE0+3bIRctQDH9zYRE="
}
Run Code Online (Sandbox Code Playgroud)
我知道一个长令牌会更安全,但超过一千个字符似乎有点可怕.在我的印象中,JWT通常非常小,但在这里,这个生成的令牌太长了,太大了.
我想生成一个更短的令牌,有什么好办法呢?
如果laravel护照能够指定令牌的长度?
JWT 的长度取决于两件事:有效负载大小和使用的加密算法。Laravel 似乎正在为其 JWT 使用公钥/私钥哈希 (RS256),这比使用 HS256 算法需要更长的密钥长度。如果您访问https://jwt.io/并粘贴您的令牌,您就可以看到它。
如果你想使用 Laravel Passport,那么没有简单的方法可以解决这个长度要求。您可以使用覆盖用于设置哈希算法的 Passport 方法的方法创建库(不建议您陷入这个兔子洞),或者您可以不使用 Passport 而是实现您自己的 JWT 令牌身份验证系统,或者您可以就接受长令牌吧。