gpt4 book ai didi

javascript - 无法从 req.user 获取用户名以快速输出

转载 作者:行者123 更新时间:2023-11-29 17:52:37 24 4
gpt4 key购买 nike

我正在使用 ejs 尝试在 node express 应用程序中从 req.user 输出用户名,但它似乎不起作用。

这是我的用户名和密码的来源:

app.get('/', function(req, res) {
res.render('index', {
isAuthenticated: req.isAuthenticated(),
user: req.user
});
console.log("req.user:", req.user);
});

此时,我可以在终端中看到 req.user 显示如下:

req.user: [ { _id: 5890f8a97ef995525d4b78cd,
username: 'dave',
password: 'somepassword',
__v: 0 } ]

这是我在 index.ejs 中的内容:

<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<head>
<body>
<% if (!isAuthenticated) { %>
<a href="/login">Log in here</a>
<% } else { %>
Hello, <%= user.username %>!
<a href="/logout">Log out</a>
<% } %>
</body>
</html>

这是登录表单:

<!DOCTYPE html>
<html>
<head>
<title>Passport</title>
<head>
<body>
<form action="" method="post">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Login">
</form>
</body>
</html>

我最初在我的 index.ejs 中有这个,但仍然没有输出用户名。

Hello, <%= user.name %>!

非常感谢任何帮助。

最佳答案

根据您的终端显示的内容,它看起来像 req.user是一个包含对象的数组,这意味着您需要在访问对象的属性之前访问数组中的元素之一。

因此<%= user.username %>将是 <%= user[0].username %> :

<% if (!isAuthenticated) { %>
<a href="/login">Log in here</a>
<% } else { %>
Hello, <%= user[0].username %>!
<a href="/logout">Log out</a>
<% } %>

或者您可以只更新 Web 服务以传入 user 中的第一个元素数组:

res.render('index', {
isAuthenticated: req.isAuthenticated(),
user: req.user[0]
});
<% if (!isAuthenticated) { %>
<a href="/login">Log in here</a>
<% } else { %>
Hello, <%= user.username %>!
<a href="/logout">Log out</a>
<% } %>

您可能还想检查 user 是否array 包含任何元素以防止在不存在时抛出任何错误:

res.render('index', {
isAuthenticated: req.isAuthenticated(),
user: (req.user && req.user.length) ? req.user[0] : {}
});

关于javascript - 无法从 req.user 获取用户名以快速输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com