webman-jwt icon indicating copy to clipboard operation
webman-jwt copied to clipboard

获取方式建议

Open abigsoft opened this issue 1 year ago • 6 comments
trafficstars

1、建议增加GET的获取方式,有的项目并不是从header里放。 2、建议增加验证方法,入参是token和uid,判断两个是否相同

abigsoft avatar Jan 07 '24 08:01 abigsoft

我的项目有个场景: 连接websocket,连接的时候有个get参数取到token,要根据这个参数获取到uid进行绑定client_id 希望能得到升级支持

abigsoft avatar Jan 07 '24 08:01 abigsoft

第二个:2、建议增加验证方法,入参是token和uid,判断两个是否相同 。没太理解什么意思?

Tinywan avatar Jan 07 '24 13:01 Tinywan

我目前是用: $uid = \Tinywan\Jwt\JwtToken::verify(1,$data['get']['token'])['extend']['id']; 解出来的uid跟socket绑定的uid进行比较,验证这个token与socket绑定的uid是否相同,不相同则关闭socket连接,希望能有个内置方法直接判断

abigsoft avatar Jan 08 '24 00:01 abigsoft

JWT不是你这么使用的,你只负责获取就行了,不需要自己验证令牌。

$userId = \Tinywan\Jwt\JwtToken::getCurrentId();
if (0 === $request->userId) {
    throw new ForbiddenHttpException();
}
...
继续下一步

你可以在连接websocket的回调事件里面加上这个判断,例如,如果获取不到uid则抛出异常或者关闭当前客户端。

Tinywan avatar Jan 08 '24 01:01 Tinywan

因为第一条,token是放在get里的,所以没法用getCurrentId取到

abigsoft avatar Jan 08 '24 03:01 abigsoft

最新版本已支持。https://github.com/Tinywan/webman-jwt/releases/tag/v1.9.0

Tinywan avatar Jan 09 '24 03:01 Tinywan