【问题标题】:Unable to modify config if Catalyst Session or Authentication plugins are enabled如果启用了 Catalyst 会话或身份验证插件,则无法修改配置
【发布时间】:2014-03-15 12:10:07
【问题描述】:

如果我启用 Catalyst::Plugin::Session 或 Catalyst::Plugin::Authentication,我将无法再通过 myapp.conf、myapp_local.conf 或 MyApp.pm 添加设置。我进行了广泛的搜索,但找不到任何关于为什么会发生这种情况的文档。这是功能还是错误?我正在使用最新版本的 Catalyst 和可通过 FreeBSD 端口树获得的 Session 插件。我在 Debian 上测试过,同样的问题。

p5-Catalyst-Runtime-5.90016
p5-Catalyst-Plugin-Session-0.35
p5-Catalyst-Plugin-Session-State-Cookie-0.17
p5-Catalyst-Plugin-Session-Store-FastMmap-0.16

我正在运行开发服务器。插件在 MyApp.pm 中加载如下:

use Catalyst qw/
    ConfigLoader
    Static::Simple
    Authorization::Roles
    Authentication
    Session
    Session::Store::FastMmap
    Session::State::Cookie
/;

只要启用了 Session 或 Auth 插件,尝试设置配置值就会失败。唯一的例外是“名称”变量。

__PACKAGE__->config(
    name => 'Will be accessible via "name"',
    foo => 'Will not be accessible via c.foo if plugins are loaded',
    disable_component_resolution_regex_fallback => 1,
    enable_catalyst_header => 1, # Send X-Catalyst header
);

我可以看到 ConfigLoader 和 myapp.conf 正在服务器调试输出中加载。由于这是许多用户可能使用的非常基本的设置,我假设我遗漏了一些相当明显的东西。插件文档和我查过的任何其他来源都没有提到任何关于此的内容,除非我完全错过了它。

更新:我认为我通过开发服务器运行它的事实可能是一个问题。我通过 Apache/FastCGI 进行了部署,但没有任何区别。

【问题讨论】:

    标签: perl session catalyst


    【解决方案1】:

    对不起,我需要50声望才能发表评论,所以,我会在这里提问,

    您可以在 App.pm 中的 __PACKAGE__->setup(); 之前添加此代码吗?

    my $conf = __PACKAGE__->config;
    use DDP; p $conf;
    exit;
    

    如果你没有 Data::Printer,你可以这样做:

    my $conf = __PACKAGE__->config;
    use Data::Dumper; print STDERR Dumper $conf;
    exit;
    

    这将显示您当前的配置。

    我觉得你误解了它的工作原理。既然您说“foo”“如果加载了插件,将无法通过 c.foo 访问”,因此如果您使用的是 Template::,则应该可以通过 $c->config->{foo} 或 c.config.foo 访问它:工具包

    【讨论】:

    • 我知道结果会很简单,我忘记了 c.config。让我感到困惑的是,它在未加载插件时工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2021-02-13
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多