2011-01-24 96 views
5

我與「頁面」控制器「顯示」方法和「AUTHS」控制器,如果用戶通過驗證,返回1「檢查」的方法。 我有「默認」頁面(「/簡介」)。需要具有路由幫助Mojolicious

如果用戶沒有通過身份驗證,我需要重定向到/如果用戶已通過身份驗證並將所有頁面重定向到授權表單。我的代碼不希望正確(AUTH基礎上,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'); 
+3

你能解釋一下「不想正常工作」的意思嗎?你已經解釋了它應該做什麼,但不是實際發生了什麼。 – mfontani 2011-01-24 13:41:21

回答

11

看來你要/以呈現。一個登錄形式一個輪廓頁。上面的代碼將始終顯示/登錄因爲它第一次碰到這條道路條件,如果你驗證過永遠不會在意。

在您的初始路線中嘗試使用開關/(橋樑後的默認路線是不必要的)。

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 ::精簡版的實例來幫助調試問題。
  • 嘗試使用under而不是bridge
  • 嘗試使用$ R-> GET(..)而不是$ R->路線(..) - >通過(..)

希望這有助於。