在Laravel中设置加密密钥会导致系统注销


Setting the Encryption Key in Laravel results to logout

我需要将用于后续Crypt::encrypt()Crypt::decrypt()调用的键,但仅在当前请求中。

    Crypt::setKey('1');
    $pin_code   = Crypt::encrypt($pin_codes[$key]);

//它执行加密,然后自动注销

有什么问题吗?

我想通了

Laravel只在三个地方使用Crypt包。

  1. 缓存。特别是如果您使用的是数据库缓存驱动程序,那么放在缓存中的值将在保存之前加密,并在加载时解密。
  2. 饼干。Cookie值总是被加密发送给用户。当请求加载时,所有的cookie值都被解密。
  3. 队列。特别是如果你使用的是铁队列驱动程序,那么值存储在队列中,一旦检索就加密和解密。

因为第2点…我们将被注销系统

所以最好将key重置为原来的

Crypt::setKey('1'); 
$pin_code   = Crypt::encrypt($pin_codes[$key]);
Crypt::setKey(Config::get('app.key'));//reset to original after job is done