在Laravel中设置加密密钥导致注销问题

3

我需要在当前请求中使用的密钥,用于后续的Crypt::encrypt()Crypt::decrypt()调用。

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

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

可能出了什么问题?


很可能是由于不同的加密设置导致的,这意味着您的会话变得无效,我猜测是这样的... - Laurence
1个回答

7

我已经理解了

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

  1. 缓存。特别是如果您正在使用Database Cache驱动程序,则将放置在缓存中的值在保存之前进行加密,并在加载时进行解密。
  2. Cookie。Cookie值始终以加密形式发送给用户。当请求加载时,所有Cookie值都会被解密。
  3. 队列。特别是如果您正在使用铁路队列驱动程序,则值将以加密形式存储在队列中,并在检索后进行解密。

由于第二点...我们将被系统注销

所以最好将密钥重置为原始状态

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接