如何在 Symfony 3.4 中生成令牌

How to generate a Token in Symfony 3.4

我将 symfony 2.7 更新到 symfony 3.4。 我在 Symfony 2.7 中使用函数 generateToken() 为文件上传任务创建令牌。我只找到了有关 安全生成随机值的信息 用于 symfony 3.4。但是我如何整合它呢?

我可以使用以下语句吗?

 return bin2hex(random_bytes(32));

我知道这可能会迟到,但希望它能对其他人有所帮助,因为 symfony 没有开箱即用的功能可用于生成令牌。

所以当我 运行 遇到这个问题时我所做的是我使用了与 FOSUserBundle 使用的相同的令牌生成器,它是这样的:

public function generateToken()
{
    return rtrim(strtr(base64_encode(random_bytes(32)), '+/', '-_'), '=');
}

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Util/TokenGenerator.php

正如你所看到的,它使用了官方documentation of symfony combined with the php function base64_encode() wich is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies as explained in the official php documentation and they are using exactiy this example中推荐的random_bytes()函数。