我让这个 node 服务器运行:

var server=http.createServer(function(request, responsehttp) {
    if (request.method == 'POST') {
        var body = '';
        request.on('data', function (data) {
            body += data;
        });
        request.on('end', function () {
            var POST = qs.parse(body);
            processquery(POST, request, responsehttp);
        });
    } else {
        var url_parts = url.parse(request.url, true);
        var query = url_parts.query;
        console.log(query);
        processquery(query, request, responsehttp);
    }
});

我想添加此服务器的登录表单.所以当用户通过身份验证时,它就会显示出来.

   function processquery(query, request, responsehttp){
    var returnResult = function (data){
        responsehttp.end(JSON.stringify(data));
    };

    if (!query.command) {
        fileprocess(request, responsehttp);
    }
    responsehttp.writeHead(200, {"Content-Type": "application/json"});
    switch(query.command) {
        case 'logout':
            logout(query, returnResult);
            break;
        case 'login':
            login(query, returnResult);
            break;
    }    
}

进程内查询功能,如果未给出任何命令,则将文件返回给客户端,

我试过的.

function login(request, callback) {
    if(request.username==users[request.username] && request.password==users[request.username].password) {
        users[request.username].auth=true;
        var data = {result:'success','message':'login successful'};
        callback(data);
    } else {
        var data = {result:'error','message':'login incorrect'};
        callback(data);
    }
}

请建议我如何在我try 添加的会话中添加会话,登录函数中的请求变量,以及try 设置请求.会话变量,它表示请求.会话未定义.

请建议我如何编写这个登录模块,它可以 for each 用户正确维护登录身份验证.

推荐答案

以下是我如何使用Express.js:

1) Check if the user is authenticated:我有一个名为CheckAuth的中间件函数,我在每个需要对用户进行身份验证的路由上使用它:

function checkAuth(req, res, next) {
  if (!req.session.user_id) {
    res.send('You are not authorized to view this page');
  } else {
    next();
  }
}

我在我的路由中使用此功能,如下所示:

app.get('/my_secret_page', checkAuth, function (req, res) {
  res.send('if you are viewing this page it means you are logged in');
});

2) The login route:

app.post('/login', function (req, res) {
  var post = req.body;
  if (post.user === 'john' && post.password === 'johnspassword') {
    req.session.user_id = johns_user_id_here;
    res.redirect('/my_secret_page');
  } else {
    res.send('Bad user/pass');
  }
});

3) The logout route:

app.get('/logout', function (req, res) {
  delete req.session.user_id;
  res.redirect('/login');
});      

如果您想了解更多有关Express的信息.点击这里查看他们的网站:expressjs.com/en/guide/routing.html

Node.js相关问答推荐

使用OpenAI API时遇到问题

Express 4.18正文解析

Mongoose-不会更新数组中的属性值

为什么我收到此错误:MissingSchemaError:架构尚未为模型&业务&注册

类扩展值[object object]不是构造函数或null

我的 MERN 网站一直告诉我我的一个函数不是一个函数

将图像添加到多个产品的条带 checkout 会话中

在系统启动时启动本地 node 服务器

nvm / node / npm: node 12 的 npm 比 node 14 的更新?

Mongodb聚合传递一个匹配的数组和一个不匹配的数组

为什么我的react 表单不能正常工作?

users.watch(在 gmail google api 中)如何收听通知?

如何在 Node.js 的 console.log() 中创建换行符

如何将使用 Gulp 的 node 部署到 heroku

mongoose 模式中的嵌套对象

用于排除多个文件的 node.js glob 模式

如何将`yarn.lock`与`package.json`同步?

我可以在 Heroku 中运行咖啡脚本吗?

代理后面的凉亭

- configuration.output.path:提供的值public不是绝对路径!使用 Webpack