perl mojolicious - 使用 flash 会产生奇怪的错误

perl mojolicious - using flash gives wierd error

下面的代码给出了错误:

不能在 /usr/local/share/perl/5.22.1/Mojolicious/Controller.pm 第 286 行使用未定义的值作为 ARRAY 引用。

而且我不太确定我将如何处理它。特别是因为它在源代码中引用了一个似乎与 cookie 加密有关的错误。我的应用程序不包含 cookie 或加密,这令人惊讶。

 sub remove {
    my $self = shift;
    my $host_id = $self->stash('host_id');

    $self->hosts->remove($self->stash('host')->{host_id});

    $self->flash(message => 'User created successfully!');
    $self->redirect_to('hosts');
}

当您将 undef 作为您的秘密时,这很可能会发生。错误来自 following line:

my $checksum = Mojo::Util::hmac_sha1_sum($value, $self->app->secrets->[0]);

通常情况下,秘密是预先生成的,这是不安全的,需要您在应用程序的配置中定义。使用它的一个例子是 Mojo::Pg example application:

{
    pg      => 'postgresql://tester:testing@/test',
    secrets => ['s3cret']
}

然后由应用程序本身使用

$self->secrets($self->config('secrets'));

如果您的应用程序从配置文件设置机密但配置文件未声明机密,或者密钥拼写错误,则每当您尝试设置 cookie 时都会返回您写入的错误,例如就像使用闪光灯一样。