2016-11-03 15 views
0

私がログイン機能を実装しようとしているとエクスプレスルータを使用して、成功/失敗後のリダイレクトがあります:角度UIルータおよびエクスプレスルータ

router.post('/login', 
    passport.authenticate('local', {successRedirect:'/dashboard', failureRedirect:'/login',failureFlash: true}), 
    function(req, res) { 
    res.redirect('/'); 
    }); 

と成功し、ログインした後、私はCannot GET /dashboardを得たか、失敗した場合にCannot GET /login。 サーバー(Express)とクライアント側(角度UIルーター)のルーティングには互換性がありますか?私はルータとどちらか一方だけを使うべきですか?あなたの急行ルータは結構です

angular 
    .module('app', [ 
    'ngAnimate', 
    'ngAria', 
    'ngCookies', 
    'ngResource', 
    'ngTouch' 
    ]) 
    .config(function ($stateProvider, $urlRouterProvider, $locationProvider){ 
    $stateProvider 
     .state('login', { 
     url: '/login', 
     templateUrl: 'views/login.html', 
     controller: 'LoginCtrl' 
     }) 
     .state('home', { 
     url: '', 
     templateUrl: 'views/home.html', 
     controller: 'HomeCtrl' 
     }) 
     .state('home.dashboard', { 
     abstract: true, 
     url: '/dashboard', 
     templateUrl: 'views/dashboard.html' 
     }); 

    // For any unmatched url, send to/
    $urlRouterProvider.otherwise('/'); 
    $mdGestureProvider.skipClickHijack(); 
    //remove the hashtag from URL 
    $locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false 
    }); 
    }); 

答えて

1

:ここ

はUIルータのためのコードです。標準的なフォーム提出であった場合、ページは適切にリダイレクトされます。

しかしAngular Appのajaxでリクエストが行われるため、これらのリダイレクトはアプリには知られておらず、何もしません。

ダッシュボードまたはログインコントローラでログインステータスを評価し、そこからリダイレクトします。

+0

フォームを通じて直接要求があり、 '<フォームクラス= "フォーム" 方法= "POST" ACTION =" /ユーザー/ログインをしてみてください">

' Angular Router( '$ state.go( 'home.dashboard');')を使用してリダイレクトを処理するロジックをクライアントサイドコントローラに作成することをお勧めしますか? – corry

+0

はい、そうでしょう – Pankaj

1

あなたが書いた現在のコードはフロントエンドにリダイレクトされておらず、新しいGETリクエストを生成しています。生成されたGETリクエストを処理する必要があります。あなたのケースで

router.get('/dashboard',function(req,res){ 
      res.redirect("full path of the url which you use in browser") 
    }); 

またはこの

{successRedirect:'http://your front end domain/dashboard', failureRedirect:'http://your front end domain/login',failureFlash: true} 
+0

私は両方の解決策を試しましたが、まだCan not GET/dashboardです。うーん、それは問題が角度uiルータ上にあるようだ/ – corry

+0

ログインを打つと、ブラウザでURLが変更されますか? – MeanMan

+0

はい、urlは '/ dashboard'を取得しています – corry

関連する問題