【问题标题】:Need help with routing in Mojolicious在 Mojolicious 中需要路由帮助
【发布时间】:2023-04-01 19:42:01
【问题描述】:

我有带有“show”方法的“Pages”控制器和带有“checkAuths”控制器/strong>" 方法,如果用户通过身份验证,则返回 1。 我有“默认”页面(“/profile”)。

如果用户通过身份验证,我需要重定向到 /,如果用户未通过身份验证,我需要使用授权表单将所有页面重定向到 /。我的代码不想正常工作(基于 FastNotes 示例应用程序的身份验证):(

auths#create_form - 带有授权表单的 html 模板。

    $r->route('/')       ->to('auths#create_form')   ->name('auths_create_form');
    $r->route('/login')      ->to('auths#create')    ->name('auths_create');
    $r->route('/logout')     ->to('auths#delete')    ->name('auths_delete');
    $r->route('/signup') ->via('get') ->to('users#create_form')   ->name('users_create_form');
    $r->route('/signup') ->via('post') ->to('users#create')    ->name('users_create');
    #$r->route('/profile') ->via('get') ->to('pages#show', id => 'profile') ->name('pages_profile');

    my $rn = $r->bridge('/')->to('auths#check');
    $rn->route        ->to('pages#show', id => 'profile') ->name('pages_profile');

 $rn->route('/core/:controller/:action/:id')
    ->to(controller => 'pages',
   action  => 'show',
   id   => 'profile')
    ->name('pages_profile');

 # Route to the default page controller
 $r->route('/(*id)')->to('pages#show')->name('pages_show');

【问题讨论】:

  • 您能解释一下“不想正常工作”是什么意思吗?您已经解释了它应该做什么,但没有解释实际发生的情况。
  • 你确定 check() 在预期的时候返回 true 吗?

标签: perl authentication routing mojolicious


【解决方案1】:

您似乎希望/ 呈现登录 表单 个人资料 页面。上面的代码将始终将 / 显示为 login,因为它首先满足该路由条件,并且永远不会关心您是否已通过身份验证。

尝试在您的初始路由中为/ 切换(不需要桥接后的默认路由)。

my $r = $self->routes;
$r->get('/' => sub {
    my $self = shift;
    # Check whatever you set during authentication
    my $template = $self->session('user') ? '/profile' : '/login';
    $self->render( template => $template );
});

关于您的示例的几点说明:

  • 如果您使用 Mojolicious::Lite 作为示例,它更容易帮助调试问题。
  • 尝试使用under 而不是bridge
  • 尝试使用 $r->get(..) 代替 $r->route(..)->via(..)

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多