2016-05-25 15 views
2

NodeJSサーバーとしてexpressJSを使用します。ユーザーはPOSTを通って、私はページをレンダリングする資格情報を確認した後、私の彼のログイン情報送信:POST後にExpressJSを使用してURLを変更します

router.post("/login", function (req: Request, res: Response, next) { 
    if(credentialsOK){ 
     res.render('main'); 
    } 
}); 

問題はURLがhttp://myaddress/loginになり、私はアドレスの/ログインを削除したいということです。私は、レンダリングを通じてローカル変数を送信したいので、リダイレクトを使用したくありません。

URLを変更するにはどうすればよいですか?

+0

JavaScriptのメソッドを使用して、URL を変更することができますクライアントでajaxを使用してリクエストを作成し、res.json()を使用してajaxコールル経由でローカル変数をクライアントに送信しますか?または、レンダリングとは何か違う「メイン」をレンダリングしたいですか? –

+0

@JoseHermosillaRodrigoメインはレンダリングされるものと異なります – ncohen

+0

あなたはそれを行うことができる唯一の方法は、クライアントで、ajaxコールから受け取ったデータをレンダリングしたいものをレンダリングすることです。推測。 –

答えて

4

ローカル変数は、res.redirectで引き続き渡すことができます。

router.post("/login", function (req: Request, res: Response, next) { 
    if(credentialsOK){ 
     req.session.localVar = yourLocalVar; 
     res.redirect('/main'); 
    } 
}) 

次にmainルータに:

router.get("/main", function (req: Request, res: Response, next) { 
    var yourLocalVar = req.session.localVar; 
    res.render('main'); 
}) 
1

あなたは、サーバー側からのURLを変更することはできませんが、あなたはなぜドンwindow.history.pushState("", "", '/');

<script> 
window.history.pushState("", "", '/'); 
</script> 
関連する問題