加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 为什么Catalyst中的这种条件重定向不起作用?

发布时间:2020-12-16 06:12:37 所属栏目:大数据 来源:网络整理
导读:我有一个 Catalyst应用程序,并希望根据条件语句重定向.我遇到了麻烦,我想知道是否有人可能会深入了解为什么这个看似简单的任务难以证明. 在我的Root.pm模块中,我有一个子开头,可以重定向到另一个网站,例如www.perl.org,但我无法重定向到我的应用程序中的页面
我有一个 Catalyst应用程序,并希望根据条件语句重定向.我遇到了麻烦,我想知道是否有人可能会深入了解为什么这个看似简单的任务难以证明.

在我的Root.pm模块中,我有一个子开头,可以重定向到另一个网站,例如www.perl.org,但我无法重定向到我的应用程序中的页面.有关如何进行条件重定向的任何想法?

sub begin : Private {
    my ( $self,$c ) = @_;
    $c->stash->{client_id} = somenumber; # I'm setting this manually for testing

    $c->res->redirect('http://www.perl.org/') unless $c->stash->{client_id};
    $c->res->redirect('http://www.mysite.com/success') if $c->stash->{client_id}; #does not
}

解决方法

也许你陷入了无限循环,你的开始子将用户重定向到Catalyst应用程序中的另一个页面;一旦“将运行的控制器已被识别,但在调用任何URL匹配操作之前”( from the Catalyst::Manual::Intro man page),将再次调用begin,从而导致另一个重定向,依此类推.

尝试将此代码从完全开始移出;也许,正如Htbaa所说,汽车可能就是你想要的.标准的$c->分离案例(在控制器控制器中)是:

sub check_login :Local {
  # do something
  $c->detach('controller/login_successful') if($success);
  # display error message
}

sub login_successful :Local {
  # do something with the logged in user.
}

在这种情况下,执行$c-> res->重定向(‘http://example.com/login_successful’)也应该可以正常工作.希望有所帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读