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 时都会返回您写入的错误,例如就像使用闪光灯一样。
下面的代码给出了错误:
不能在 /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 时都会返回您写入的错误,例如就像使用闪光灯一样。