2016-05-04 3 views
3

フェッチを使用してノードサーバ(Express)と通信しています。私はSPAを構築しています。サーバーへの各リクエストで、セッションが有効かどうかを確認しています。セッションが有効でない場合は、ノードからログインページにリダイレクトしています。問題はそれです。セッションが無効になっている場合(たとえば、ページリフレッシュなしでバックグラウンドで実行されているget/postリクエスト)、リクエストは黙って失敗しています。リダイレクトされません。フェッチ後のコールのリダイレクト要求を管理する方法

私もajaxリクエストで同じ問題がありました。私がしたことは、要求がxhrであり、jsonを受け入れていることを確認することです。その後、jsonレスポンスを送信し、フロントエンドでリダイレクトを処理します。

if (req.xhr && req.accepts('json')) { 
    res.json({status:'session_timeout'}); 
}else{ 
    res.redirect('/login'); 
} 

フェッチを使用して同じことを行うにはどうすればよいですか。フェッチとノードを使用してリダイレクトを処理する方法

答えて

0

セッションが有効かどうかをどのように判断しているかわからないからです。リクエストがブラウザから送信されているかどうかを確認するテストが行​​われているかどうかを確認しているかのように見えます。そうであれば、jsonで応答します。

この場合、リダイレクトはいつ開始されますか?ブラウザからの要求を常に送信している場合は、リダイレクト文にはなりません。

ユーザー認証にパスポートを使用しようとしましたか?ユーザーがまだログインしていなかった場合は、各リクエストがリダイレクトされますように、あなたがすべてのあなたのエンドポイントに含めることができるミドルウェアを設定するのは簡単です

例えば:。

function isLoggedIn(req, res, next) { 
    if (req.isAuthenticated()) 
     return next(); 
    res.redirect('/'); 
} 

次に、あなたのAPIに:

app.get('/yourendpoint', isLoggedIn, function(req, res) { 
    /*response here*/ 
    }); 
}); 
関連する問題