【问题标题】:pass the credentials of user to all views node.js将用户的凭据传递给所有视图 node.js
【发布时间】:2017-05-28 08:44:07
【问题描述】:

我正在尝试使用 node.js Web 服务构建一个 android 应用程序,第一个界面允许用户使用 ip 地址、登录名和密码连接到主机,所以他可以获得所有数据库,我想保存在所有其他路线中使用的对象凭据,我尝试了 express-session 但它没有用。 有什么解决办法吗?

app.post('/connect',function(req,res){
    sess=req.session;
    sess.user=req.body.user;
    sess.password=req.body.password;
    sess.server=req.body.server;
    sess.database=req.body.database;
    console.log(sess)
    user = req.body.user;
    password = req.body.password;
    server = req.body.server;
    database = req.body.database;

    var config = {
        user: user,
        password: password,
        server: server,
        database: database
    };



    // connect to your database
    sql.connect(config, function (err) {

        if (err)  {res.json({success: false, message: "error connexion to SQL Server"});
            sql.close()}
        else{

            res.json({success: true, message: "connexion established to SQL Server"});

            sql.close();
        }
    });
});

【问题讨论】:

  • 查找 Passport.js。它使用 Express 会话或 Json Web 令牌。
  • 这不是我想要的解决方案
  • 为什么这不是您的解决方案?你的用例到底是什么?

标签: javascript android node.js session express


【解决方案1】:

在您的情况下,由 android(或其他)的 http lib 发出的请求不是浏览,那么 express-session 将不起作用。您的服务器必须像 API 服务器,客户端(android)请求登录服务器响应令牌(api 密钥或相同),在下一个请求客户端推送数据嵌入令牌和服务器端可以凭据请求。我建议阅读有关 JWT (Json Web Token) 的信息。

【讨论】:

    【解决方案2】:

    如果您在节点应用程序中使用 express 模块,这很容易。 您基本上使用 express 创建路由,并且可以将所需的数据传递给适当的路由和视图,如下所示

    router.get('/', function(req, res, next) {
      res.render('category', 
        { 
          videodata: vd
        });
    });
    

    这里在渲染响应时,还包括要传递的数据。它的名字是videodata,值是vd

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多