2017-01-24 7 views
1

ノードJSを初めて使用しています。私はエクスプレスとパスポートでそれを使用しています。私はまた、dbから現在のユーザーを追跡しています。ノードJでリダイレクトが正しく機能しない

目標は、他のデータにアクセスできないようにすることです。他のデータにアクセスしようとすると、正しいデータページにリダイレクトされ、connect-flashからのメッセージが表示されます。

app.get('/data/:dataPlace', isLoggedIn, function(req, res) { 
    if (req.user.dataPlace == req.params.dataPlace) { 
     res.render('data.ejs', { 
      user : req.user, 
      message: req.flash('dataDisplayMessage') 
     }); 
    } 
    else { 
     req.flash('dataDisplayMessage', 'OOOPS!'); 
     res.redirect('/data/' + req.user.dataPlace); 
    } 
}); 

これは(さえクロームプリフェッチ・データで)最も時間の作品:

GET /data/asdasd 302 1.049 ms - 86 
GET /data/user 200 1.129 ms - 1639 

まれな機会に私のような何かを得るだろう、しかしここ

はコードがありますこれは:

GET /data/asdasd 302 1.108 ms - 86 
GET /data/asdasd 302 1.989 ms - 86 
GET /data/user 200 2.769 ms - 1646 

最初のGET要求が発生しましたクロムプリフェッチデータによる。以前のように 'user'にすぐにリダイレクトするのではなく、 'asdasd'の別のGETリクエストを入力してから 'user'にリダイレクトします。

メッセージが2回表示されます。 enter image description here これは正しい方法ですか?なぜメッセージを2回表示するのですか?どんな提案も大歓迎です!

+0

が、それは他のブラウザでこれを行うん:フラッシュが一度EJSファイルに変更された

コードを取得したすべてのメッセージを削除するようあなたは、表示するための複数のエラーメッセージを持っている場合、これは理想的ではないでしょう?多分それはクロムの問題ですか?私はChromeのプリフェッチに問題があることを知っています。実際問題はありませんが、開発中は予期せぬ要求が問題を見つけようとすると混乱を招く可能性があります。 – Kryten

+0

@Kryten私はサファリで試してみましたが、同じ結果を再現できないようです...回避策がないと非常に悲しい – Zack

答えて

0

これはChromeの問題と思われます。私の一時的な解決策は、最初のエラーメッセージを受け入れることです。これはのみですが、特定の時間にユーザーに表示するエラーメッセージは1つのみです。

<% if (error.length > 0) { %> 
     <div class="alert alert-danger" role="alert"> 
      <%= error[0] %> 
     </div> 
<% } %> 
関連する問題