从节点 js 服务器文件向浏览器添加 cookie
Posted
技术标签:
【中文标题】从节点 js 服务器文件向浏览器添加 cookie【英文标题】:adding cookies to the browser from the node js server file 【发布时间】:2020-01-18 08:33:48 【问题描述】:我的 index.js 文件一个节点 js 文件如下所示
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
let cryptr = require('cryptr');
let localStorage = require('node-localstorage');
cryptr = new cryptr('myTotalySecretKey');
const jwt = require('jsonwebtoken');
var dir = path.join(__dirname, 'public');
const app = express();
app.use(cookieParser());
app.use(express.static(dir));
app.use(bodyParser.urlencoded( extended: true ));
app.use(bodyParser.json());
app.use(express.static(__dirname + 'public'));
var mysql = require('mysql');
var connection = mysql.createConnection(
host: 'localhost',
user: 'trello',
password: 'trello',
database: 'trello'
);
connection.connect(function (err)
if (!err)
console.log("Database is connected");
else
console.log("Error while connecting with database");
);
module.exports = connection;
app.post('/Authenticate', (req, res) =>
let email = req.body.email;
let password = req.body.password;
let sql = 'select * from users where email = ?';
let values = [[email]];
connection.query(sql, [values], function (err, result)
if (err) throw err;
if (result.length > 0)
decryptedString = cryptr.decrypt(result[0].password);
if (password == decryptedString)
console.log('user is logged in: ');
jwt.sign( result , 'secretkey', (err, token) =>
console.log('token = ' + token);
res.cookies('email', req.body.email);
);
return res.redirect('/home.html');
else
res.redirect('/login.html');
);
);
app.listen(3000);
但我无法将 cookie 设置到客户端,即在浏览器上,我使用 res.cookie(key, value) 但它没有工作任何人都可以指导为什么会发生这种情况,我对 node js 还是很陌生并表达js
【问题讨论】:
【参考方案1】:您输入的似乎是res.cookies()
,而不是res.cookie()
。这看起来是个问题,虽然我可能是错的。
小提示:验证用户身份时,最好使用会话。这只是意味着 cookie 值存储在数据库(或其他地方)中,而浏览器仅存储该会话唯一的 ID。这可以防止恶意人员窃取密码等。 Express 有一个名为express-session
的模块,这就是我使用的。 Here's 一个 MySQL 插件。只是需要调查一下。
更多信息:What is the difference between server side cookie and client side cookie?
【讨论】:
感谢 Caleb,我已经更改了它,但顺便说一下,它仍然无法正常工作,感谢您告诉我有关 express-sessions 的信息 嗯...这很奇怪。请问module.exports
在这里完成了什么?以上是关于从节点 js 服务器文件向浏览器添加 cookie的主要内容,如果未能解决你的问题,请参考以下文章