Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不向用户透露ID的Laravel标识用户_Laravel_Laravel 8_Laravel Echo - Fatal编程技术网

不向用户透露ID的Laravel标识用户

不向用户透露ID的Laravel标识用户,laravel,laravel-8,laravel-echo,Laravel,Laravel 8,Laravel Echo,在laravel,我为websocket广播设置了一个私人频道 频道是这样的: Broadcast::channel('user.{id}', function ($user, $id) { return (int) $user->id === (int) $id; }); 因此,在本例中,作为身份验证过程的一部分,我向他们透露了用户的ID Laravel是否有任何其他我可以使用的唯一用户标识符,不会向用户泄露用户计数信息 例如: Broadcast::channel('user

在laravel,我为websocket广播设置了一个
私人频道

频道是这样的:

Broadcast::channel('user.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});
因此,在本例中,作为身份验证过程的一部分,我向他们透露了用户的ID

Laravel是否有任何其他我可以使用的唯一用户标识符,不会向用户泄露用户计数信息

例如:

Broadcast::channel('user.{token}', function ($user, $token) {
    return $user->some_unique_token === $token;
});

或者我应该使用类似的东西来混淆用户ID吗?(不确定Laravel是否附带了类似的内容?

尝试生成唯一用户id(uuid)并使用uuid完成所有工作,将uuid的另一列放入用户表
Str::uuid()这不会显示用户id

最好的方法是使用一些双向哈希算法,如hashID
即使在JWT中,使用HashID防止用户id被泄露也是最好的方法之一。

最后,我为用户模型创建了一个简单的哈希方法,然后用它代替id来验证用户

这是添加到用户模型的方法:

public function hash(){
    return hash('sha256',$this->id.env('APP_KEY'));
}
然后广播频道是这样的:

Broadcast::channel('user.{hash}', function ($user, $hash) {
    return $user->hash() === $hash;
});

您可以将唯一标识符标记与ID一起存储并显示,但显示他们的ID有什么问题?我不想透露我有多少用户ID不一定反映了这一点,ID为10的用户不知道从那时起注册了多少用户。是的,您可以创建一个新用户并检查其ID,但最大的问题是什么?我看不到问题所在?如果这确实是一个主要问题,那么只需为用户生成一个UUID并使用它即可。