Laravel Identity用户,而不向用户透露ID



在laravel中,我为websocket广播设置了一个privatechannel

通道是这样的:

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;
});

或者我应该用这样的东西https://hashids.org/php/混淆用户ID?(不确定Laravel是否携带这样的东西?(

尝试生成唯一的用户id(uuid(,并用uuid做所有事情,将uuid的另一列放入用户表Str::uuid();,这不会显示uuid 的用户id Laravel Str Helper

最好的方法是使用一些双向散列算法,比如散列即使在JWT中,使用哈希来防止user_id被泄露也是的最佳方法之一

最后,我只是为用户模型创建了一个简单的哈希方法,然后使用它而不是ID来验证用户。

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

public function hash(){
return hash('sha256',$this->id.env('APP_KEY'));
}

然后广播频道如下:

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

最新更新