2017-05-04 14 views
0

リダイレクトします。私が直面しています問題は、私のログインページが私のデフォルトのホーム・ページではないということですが、それはむしろ、このです:NodeJSパスポートは、私はNodeJSとエクスプレスバックエンドスクリプトのパスポートを持つユーザーのリダイレクトを実装しようとしています

localhost:3000/login 

私は、ユーザーが登録されていない場合は、彼がそのような他のページにアクセスできないようにそれを作ることができました。 - localhost:3000/index

私はlocalhost:3000/を入力した場合、私は私がログインしていないよ場合でも、デフォルトindex.htmlページへのアクセスを得ることができるだけで明確にする:/indexまたは/dashboardが、何かが私のようなハードコードされたURLにアクセスしようとすると壊れるよう== localhost:3000

私はこのようなルートを操作することを決定した場合:localhost:3000/Example/pages/index.htmllocalhost:3000/Example/pages/dashboard.htmlを、それは私が私がログインしていても、ページにアクセスできるようになる

私の質問があり、私はへの経路を操作するユーザーを制限することができますか。デフォルトのホームページ、およびノー​​ドバックエンドで宣言されていない他のページ?私はこれを使用して試した

app.get('/login', 
     function(req, res){ 
      res.sendFile(path.join(__dirname + '/login.html')); 
     }); 

    app.get('/index', isLoggedIn, 
     function(req, res){ 
      res.sendFile(path.join(__dirname + '/index.html')); 
     }); 


    app.post('/login', 
     passport.authenticate('local', { failureRedirect: '/login' }), 
     function(req, res) { 
      res.redirect('/index'); 
     }); 

     app.post('/login', 
    passport.authenticate('local', { failureRedirect: '/login' }), 
    function(req, res) { 
     res.redirect('/index'); 
    }); 

マイノードルートコード

app.use(function(req, res, next) { 
if (req.session.user == undefined) { 
     return res.render('/login', { failureRedirect:'/login' }); 
    } 
    else { 
     next(); 
    } 
}); 

が、私はエラーが表示されます。んが、デフォルトのエンジンが指定されていませんし、拡張子が提供されませんでした。私は、静的なHTML、エンジンとしてJADEまたはハンドルバーまたは何か他のものを使用する必要はありません。私はapp.get(/something, function(req,res){});

答えて

0

としての私のノードページの残りの部分を定義することなく、ルートの操作を制限することができますが、ユーザーはあなたがして

isAuthenticated = (req, res, next) => { 
    if (req.isAuthenticated()) { 
    return next(); 
    } 

    res.redirect('/login'); 
}; 

を認証されているかどうかを確認するためにパスポートのミドルウェアを作ることができますどのように

これを行うことができます

app.get('/someroute', isAuthenticated, (req, res)=>{ 
    // do what you want 
}); 
+0

''/someroute ''の代わりに ''/''を使用するか、それを空のままにしたらどうなりますか?それはまだ静的なファイルのために働きますか? – coderJoe

+0

あなたが欲しいものは何でも使用することができ、ルートが何であるかは重要ではありません。ここでのアイデアはミドルウェアisAuthenticatedです。 –

+0

Vankaは動作しません。私はまだデフォルトのホーム・ページにアクセスして、経路を操作することができます。.. – coderJoe

関連する問題