【问题标题】:reaching value express session but hashing doesn`t give right value达到价值表达会话,但散列没有给出正确的价值
【发布时间】:2021-10-20 15:08:32
【问题描述】:

我想做什么? 我想登录并显示用户的每周报告。如果用户报告显示,则该用户 ID 需要提供。我想从会话中得到这个。

req.sessions.id 无法跨两个函数达到 id 的值

在 app.post("/auth", action.... ??? ~ 文件:app.js ~ 第 66 行 ~ req.session.id Wh9cIUGQzJ1PNdv0i9qb2eiUIQ3-Iy_V 在 findByWorkerId 函数中 ??? ~ 文件:report.controller.js ~ 第 28 行 ~ req.session.id.id C0yOICXX8dSFT3XLJZvf3D8NKtyEndH_

如您所见 Wh9cIUGQzJ1PNdv0i9qb2eiUIQ3-Iy_V C0yOICXX8dSFT3XLJZvf3D8NKtyEndH_ 值不一样。 我从 db 的 id 列中得到它,它就像 id 一样。例如 1、3、5

如何查看这个会话值?

app.post("/auth"

app.post("/auth", validatePayloadMiddleware, (req, res) => {
  req.session.test2 = "hello world";
  req.session.page_views = 1;


  var username = req.body.username;
  var password = req.body.password;
  if (username && password) {
    let sql =
      "SELECT username, password, id FROM workers where username = ? AND password=?";
    con.query(sql, [username, password], function (error, row, fields) {
      if (row.length > 0) {
        req.session.id = row.id;
        console.log("???? ~ file: app.js ~ line 66 ~ req.session.id", req.session.id)
        req.session.isLoggedIn = true;
        req.session.username = row.username;
      } else {
        req.session.isLoggedIn = false;
        res.send("Incorrect Username and/or Password!");
      }
      res.end();
    });
  } else {
    res.send("Please enter Username and Password!");
    res.end();
  }
});

findByWorkerId

    exports.findByWorkerId = function (req, res) {
  const id = req.session.id;
  console.log(
    "???? ~ file: report.controller.js ~ line 28 ~ req.session.id",
    req.session.id
  );

  if (!id) {
    // 400 = bad request
    return res.status(400).send("The required path variable id is missing");
  }
  if (req.session.isLoggedIn) {
    Report.findByWorkerId(id, function (err, report) {
      if (err)
        return res
          .status(500)
          .send("Error occured during fetching report for id " + id);
      console.log("report: ", report);

      return res.send(report);
    });
  } else return null;
};

应用 js 配置

    var mysql = require("mysql");
var express = require("express");
var session = require("express-session");
var bodyParser = require("body-parser");
var cors = require("cors");
var app = express();
app.use(cors());
var server = require("http").Server(app);
var port = process.env.PORT || 4000;
var con = require("./config/db");

app.use(
  session({
    secret: "Shh, its a secret!",
    resave: false,
    saveUninitialized: true,
  })
);
// to support URL-encoded bodies
app.use(bodyParser.urlencoded({ extended: true }));
// to support JSON-encoded bodies
app.use(bodyParser.json());

谢谢你!!

【问题讨论】:

    标签: javascript node.js express session express-session


    【解决方案1】:

    我不明白你为什么在以下地方使用 findByWorkerId。

    if (req.session.isLoggedIn) {
        Report.findByWorkerId(id, function (err, report) {
          if (err)
            return res
              .status(500)
              .send("Error occured during fetching report for id " + id);
          console.log("report: ", report);
    

    【讨论】:

    • 实际上当用户调用 /api/getall 时,工作函数是 findByWorkerId 并检查 session.loggedIn
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多