如何在 .ejs 视图引擎中打印 cookies

9

如何在表单属性中打印cookie的值?

这是我正在尝试的代码。

if(req.body.remember_me){
    res.cookie("cookie_email_id", req.body.email);
    res.cookie('password', req.body.password);
}else{
    res.clearCookie("cookie_email_id");
    res.clearCookie("password");
}

我已在控制台中检查了Cookie,Cookie被存储在其中,请查看 document.cookie :

cookie_email_id=abc%40gmail.com; password=123456789


你想用 cookie 值做什么?是要将它赋值给一个变量进行处理(比如查找用户数据库记录)吗? - Elliot Blackburn
不,我想使用cookie变量名称自动填充表单值。 - Shubham Azad
3个回答

6

要通过ejs预填表单输入,首先您需要通过res.cookie()设置cookie。要自动填充这些值到表单字段中,您需要从请求中获取cookie并将其分配给您的render方法。

为此,您可以使用cookie-parser中间件,并像这样在req.cookies / req.signedCookies中获取cookie值。

var express = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser())

app.get('/', function (req, res) {
  // Cookies that have not been signed
  console.log('Cookies: ', req.cookies)

  // Cookies that have been signed
  console.log('Signed Cookies: ', req.signedCookies)
})

app.listen(8080)

通过路由,您可以使用所有属性调用ejs渲染方法以自动填充。

例如:

res.render('user_profile',{name:req.cookies.name, age:req.cookies.age})

您可以将这些值放入EJS表单字段中,如下所示:
<input type="text" id="name" value="%name%"/>
<input type="text" id="age" value="%age%"/>

这是因为 Node.js 在客户端打开文件之前无法确定要从哪个浏览器获取 cookies,但页面已经呈现。 - ublec

3

当你响应时,请尝试以下操作:

res.render("your_page", {email: req.body.email, password: req.body.password});

设置emailpassword的值为输入框中的内容(使用ejs)。


1

可以从req.headers.cookie中获取Cookie,并根据需要将其传递给EJS模板或其他任何地方。

例如:

在控制台中打印Cookie:

router.get("/example"), (req, res) => { console.log(req.headers.cookie); }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接