使用express和nodejs应用程序进行响应

时间:2016-11-25 09:32:26

标签: node.js express

我有一个快速服务器和一个用HTML开发的登录页面(带有jquery)。点击登录按钮后,jQuery会激活一个HTTP get请求来表达服务器,在用户获得验证后,应该将用户重定向到登陆页面,其中包含一些数据,如名称,性别,年龄等(从服务器本身的mongoDB获取)。当我执行res.sendFileres.redirect时,无法在视图中发送参数(名称,年龄,性别)。

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

2 个答案:

答案 0 :(得分:0)

在将响应返回给jQuery代码之前,post route应该将用户保存在会话中。基本上,后期路线的响应应该只是成功或响应。

还应该有一个get路由将用户重定向到主页(或者登录后你想要用户的页面)。 此获取路由将首先检查会话中是否有用户,然后相应地重定向。

使用express-session在app中保存会话。

答案 1 :(得分: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 Server:

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);
})
  • 真正的解决方案应该是使用session来管理用户的登录会话。

    1. 使用用户名/密码登录的用户
    2. 在服务器端创建会话,将会话密钥或访问令牌发送回客户端。
    3. 当客户端请求用户信息时,使用会话密钥或访问令牌来检索用户信息
    4. 使用保存的会话中的用户信息呈现html页面

对于快速服务器,您可以开始使用express-session学习会话。