2016-11-25 42 views
-1

我有一個快遞服務器和HTML開發的登錄頁面(使用jQuery)。點擊登錄按鈕後,jQuery發出一個HTTP請求來表達服務器,並且在用戶得到驗證後,用戶應該被重定向到具有諸如名稱,性別,年齡等數據(從服務器本身的mongoDB中獲取)的一些數據的登錄頁面。當我做res.sendFileres.redirect時,參數(姓名,年齡,性別)無法在需要回應的視圖上發送。快遞和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代碼的響應。實質上,來自郵政路線的迴應應該只是成功或迴應。

還應該有一個獲取路線將用戶重定向到主頁(或者您希望登錄後用戶的頁面)。 此獲取路線將首先檢查會話中是否存在用戶,然後進行相應的重定向。

使用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 
    }); 
}); 

Express服務器:

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); 
}) 

  • 真正的解決方案應該使用會話管理登錄·塞西爲用戶打開。

    1. 用戶登錄用的用戶名/密碼,
    2. 創建在服務器端的會話,發送回一個會話密鑰或訪問令牌給客戶端。
    3. 當客戶端請求的用戶信息,利用會話密鑰或訪問令牌來獲取用戶信息
    4. 渲染與保存的會話

加急服務器的用戶信息的HTML頁面,您可以開始與express-session學習會話。