以下代码给出错误:
不能在/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');
}
答案 0 :(得分:1)
当您将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时,您所写的错误都将被返回,例如使用闪光灯。