代码提示不友好
代码提示不友好,建议把代码提示增加一下
获取用户信息文档说明:

实际的获取当前用户信息的方法是: Jwt::user()->find() 上述的方法获取不到,获取的是Service目录下面的User对象而非配置里面的user下面class模型对象 'user' => [ 'bind' => true, 'class' => 'app\common\model\Users', ]
我在上几版就发现得用->find()才可以获取😂
这个还是小事。代码提示不友好,影响看源码,没法双击进去查看
抱歉,没注意到 Jwt::user() 使用不了
抱歉,没注意到 Jwt::user() 使用不了
之前老版本获取 Jwt::userId() 我觉得有必要留一下。我为了获取uid还要去查一下数据库,之前老版本是解析了token就可以获取的,增加了没有必要的数据库的性能开销
我们下一步计划这个问题是改:README.md,还是修复 Jwt::user()原有的功能,感觉修复原来的用法不现实。还是尽快更改README.md的说明吧。然后再加一个方法 Jwt::user()->uid()类似的功能使用代替原有的 Jwt::userId() 用法
目前是可以使用以下方式获取的
use xiaodi\JWTAuth\Facade\Jwt;
// 获取(已验证后)整个用户模型对象
$user = Jwt::user();
echo $user->id;
你们具体用的是哪个版本的 我排查下
我们下一步计划这个问题是改:README.md,还是修复 Jwt::user()原有的功能,感觉修复原来的用法不现实。还是尽快更改README.md的说明吧。然后再加一个方法 Jwt::user()->uid()类似的功能使用代替原有的 Jwt::userId() 用法
还是说 你只想获取对应的id 不想查库?
你们具体用的是哪个版本的 我排查下
2.0
目前是可以使用以下方式获取的
use xiaodi\JWTAuth\Facade\Jwt; // 获取(已验证后)整个用户模型对象 $user = Jwt::user(); echo $user->id;
除了->id这个用法还有什么隐藏用法吗😳
目前是可以使用以下方式获取的
use xiaodi\JWTAuth\Facade\Jwt; // 获取(已验证后)整个用户模型对象 $user = Jwt::user(); echo $user->id;除了->id这个用法还有什么隐藏用法吗😳
Jwt::user() 就是返回已登录的用户对象模型,你可以获取 $user->xxx 某个字段, 调用 $user->xxxAction() User model 文件下的方法都行
Jwt::user() 是从这两个地方实现,其实就是根据token的id 查表返回当前用户对象。
https://github.com/friendsofthinkphp/think-jwt/blob/next/src/Service/JwtAuth.php#L115
https://github.com/friendsofthinkphp/think-jwt/blob/next/src/Service/User.php#L70
还是说 你只想获取对应的id 不想查库?
是的只想获取id不想查库。因为我想把这个id作为一个api接口的基础参数。
你们具体用的是哪个版本的 我排查下
现在composer下来的包是v2.0.3版本的。除非是特意引用开发版,现在大部分的人都是使用这个版本。项目都是要正式运行的,不敢轻易应用开发版的
目前是可以使用以下方式获取的
use xiaodi\JWTAuth\Facade\Jwt; // 获取(已验证后)整个用户模型对象 $user = Jwt::user(); echo $user->id;除了->id这个用法还有什么隐藏用法吗😳
Jwt::user()就是返回已登录的用户对象模型,你可以获取$user->xxx某个字段, 调用$user->xxxAction()User model 文件下的方法都行
好的了解,谢谢
还是说 你只想获取对应的id 不想查库?
是的只想获取id不想查库。因为我想把这个id作为一个api接口的基础参数。
只想获取生成时传入的参数 可以这样
if (app('jwt')->verify($token)) {
$token = app('jwt.token')->getToken();
$uid = $token->claims()->get('jti');
var_dump($uid);
// 获取全部参数
$claims = $token->claims()->all();
var_dump($claims);
}
还是说 你只想获取对应的id 不想查库?
是的只想获取id不想查库。因为我想把这个id作为一个api接口的基础参数。
只想获取生成时传入的参数 可以这样
if (app('jwt')->verify($token)) { $token = app('jwt.token')->getToken(); $uid = $token->claims()->get('jti'); var_dump($uid); // 获取全部参数 $claims = $token->claims()->all(); var_dump($claims); }
奇怪composer更新了还是没有到最新的有claims方法的版本,
装的稳定版composer require xiaodi/think-jwt
看了看vendor\lcobucci\jwt\src\Token.php看到里面的了,要写成
这样才有结果

$username = (string) app('jwt.token')->getToken()->getClaims()['username']; 这么写是不是有点麻烦了,不知道再加多个方法直接获取而不是查库的话好不好
意思是 实现成这样是吧?
app('jwt.token')->getClaims('username')
意思是 实现成这样是吧?
app('jwt.token')->getClaims('username')
对,这样简便了许多😁
有个小问题,为什么composer update显示已更新完了,但是lock文件里面还是2.0.3版本啊,remove后再require还是这样。😂
有个小问题,为什么composer update显示已更新完了,但是lock文件里面还是2.0.3版本啊,remove后再require还是这样。😂
好吧好像是我装的稳定版,,不好意思搞错了
这些问题都搞清楚了,什么时候把代码提示弄友好一点呀。