2016-11-25 8 views
-1

エクスプレスサーバーとログインページがHTML形式で開発されています(jqueryを使用)。ログインボタンがヒットした後、jQueryがサーバを表現するHTTP getリクエストを起動し、ユーザが検証された後、ユーザは名前、性別、年齢などのデータを含むランディングページにリダイレクトされます(サーバ自体のmongoDBから取得されます)。 res.sendFileまたはres.redirectを実行すると、応答に必要なビューでパラメータ(名前、年齢、性別)を送信できませんでした。expressおよびnodejsアプリケーションによる応答

のjQuery:

$("#submit").click(function() { 
    user = $("#email").val(); 
    pass = $("#password").val(); 
    $.post("https://localhost:443/login", { 
    user: user, 
    password: pass 
    }, function(response) { 
    if (response) { 
     alert("login success" + response.userName); 
    } 
    }); 
}); 

HTML:

<form id="grad"> 
    <h1 style="margin-top: -10px; text-shadow: 1px 1px whitesmoke;">Login</h1> 
    <h3 style="padding-bottom: 30px;font-size: 22px ">Please enter email ID and password.</h3> 
    <div class="group"> 

    <input type="email" id="email" name="email"><span class="highlight"></span><span class="bar"></span> 
    <label>Email ID</label> 
    </div> 
    <div class="group"> 
    <input type="password" id="password" name="password"><span class="highlight"></span><span class="bar"></span> 
    <label>Password</label> 
    </div> 

    <div class="group"> 
    <input type="submit" id="submit" class="button buttonRed" value="Login" onclick="validateUser()" /> 
    <input type="reset" class="button buttonRed" value="Reset" /> 
    </div> 
</form> 

エクスプレス:

app.post('/login', function (req, res) { 
    // some logic to validate user and fetch details, which will be used on view. 
    res.sendFile('landing**strong text**page.html', { root: "public" }); 
}) 
+0

あなたのコードがありません – mike510a

答えて

0

ポストルートは、ユーザーを保存する必要がありますjQueryコードへの応答を返す前に基本的には、ポストルートからの応答は成功または応答のみでなければなりません。

ユーザーをホームページ(またはログイン後にユーザーが必要なページ)にリダイレクトするためのgetルートも必要です。 このget routeは、まずセッション中のユーザーが存在するかどうかをチェックし、それに応じてリダイレクトします。

express-sessionを使用すると、アプリでセッションを保存できます。

0
  • スターター用の簡単なソリューション。これは生産現場での実用的な解決策ではなく、基礎を学びたいスターターのためのものです。

のjQuery

$("#submit").click(function() { 
    user = $("#email").val(); 
    pass = $("#password").val(); 
    $.post("https://localhost:443/login", { 
    user: user, 
    password: pass 
    }, function(response) { 
    $('body').append(response); //append html to body returned from /login 
    }); 
}); 

エクスプレスサーバ:

app.post('/login', function (req, res) { 
    // some logic to validate user and fetch details, which will be used on view. 
    var userInfo = validateAndFetchDetailFunc(); 
    res.send('Username: ' + userInfo.name + '<br>Gender: ' + userInfo.gender); 
}) 

  • 真の解決策は、管理ログインsessiにセッションを使用する必要がありますユーザーのためにオン。ユーザー名/パスワード

    1. ユーザログインサーバー側でセッションを作成し、クライアントにセッションキーまたはアクセストークンを送り返します。
    2. すると、クライアントの要求のユーザ情報を、保存されたセッション特急サーバーの場合

からユーザ情報とhtmlページをレンダリングユーザ情報

  • を取得するために、セッションキーまたはアクセストークンを使用し、 express-sessionとのセッションを開始することができます。

  • 関連する問題