2011-01-24 23 views
5

にルーティングとが必要です方法と、ユーザーが認証された場合は1を返します「チェック」方法と「AUTHS」コントローラ「を示しました」。 "default"ページ( "/profile")があります。は、私が持つ「<strong>ページ</strong>」コントローラを持ってMojoliciousの

ユーザーが認証されている場合は/にリダイレクトする必要があり、ユーザーが認証されていない場合はすべてのページを認証フォームに/ユーザーにリダイレクトする必要があります。私のコードは、(認証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

+0

check()がそうであればtrueを返しますか? –

答えて

11

あなたが/は、いずれかのレンダリングしたいようですログインフォームORプロフィールページ。それは最初にそのルートの条件にヒットし、あなたが認証されたりしていない場合は気にすることはありませんので、上記のコードは、常に/としてログインを表示します。

初期ルートで/(ブリッジが不要になった後のデフォルトルート)のスイッチをお試しください。

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のを使用する場合の問題について、デバッグを支援する方がはるかに簡単。
  • bridgeの代わりにunderを試してみてください。このことができます

・ホープ(..)経由> -

  • は$ R-> GET(..)の代わりに$ R->ルート(..)の使用してみてください。

  • 関連する問題