perl – Mojolicious动态路线动作取决于州
发布时间:2020-12-16 06:15:47 所属栏目:大数据 来源:网络整理
导读:我正在使用Mojolicious :: Plugin :: Authentication来处理我的应用程序中的身份验证.我正在尝试设置斜线’/’的路由,如果经过身份验证将有一个控制器/操作,如果没有则设置另一个(即,根据您是否经过身份验证,您将转到另一个页面.)我不确定如何实现这一目标.
我正在使用Mojolicious :: Plugin :: Authentication来处理我的应用程序中的身份验证.我正在尝试设置斜线’/’的路由,如果经过身份验证将有一个控制器/操作,如果没有则设置另一个(即,根据您是否经过身份验证,您将转到另一个页面.)我不确定如何实现这一目标.以下是我尝试过的一些事情:
$r->any('/')->to(cb => sub { my $self = shift; if ( $self->is_user_authenticated ) { $self->redirect_to('member#index'); } else { $self->redirect_to('guest#index'); } }); 和… my $logged_in = $r->under (sub { my $self = shift; if (!$self->session("username")) { return undef; } else { return 1; } }); if ( $logged_in ) { $logged_in->get('/')-to(controller => 'Member',action => 'index'); } else { $r->get('/')->to(controller => 'Guest',action => 'index'); } 我不必使用Mojolicious :: Plugin :: Authentication.我可以轻松设置会话令牌并自行检查.无论哪种方式,问题仍然存在:如何为给定路线创建动态操作? 附录 忘记添加,我也试过这个: my $auth = $r->under('/' => sub { my $self = shift; # Authenticated return 1 if $self->is_user_authenticated; # Not authenticated return undef; }); $auth->get('/')->to('member#index'); # Routes related to non-members $r->get('/')->to('guest#index'); 添加另一个细节 我只想添加,我可以根据状态渲染或重定向到不同的东西,例如, $r->any('/')->to(cb => sub { my $self = shift; if ( $self->is_user_authenticated ) { $self->render('member/index'); } else { $self->render('guest/login'); } }); 这确实很有效.但是,我仍然很好奇是否可以根据状态为给定路径设置不同的控制器/动作. 解决方法
Mojo钩子是你正在寻找的,一个非常强大的功能,对身份验证特别有用:
http://mojolicio.us/perldoc/Mojolicious#HOOKS 您可能需要查看before_dispatch() 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |