相关疑难解决方法(0)

无法使用Passport.js和Express 4访问req.user

我一直在用Passport,Express 4和Jade创建一个应用程序.我想向用户显示一个在登录时更改的导航栏.

但是,我无法访问req.user以查找除了调用isLoggedIn的配置文件页面之外的任何其他页面:

function isLoggedIn(req, res, next) {
    // if user is authenticated in the session, carry on
    if (req.isAuthenticated())
        return next()

    // if they aren't redirect them to the home page
    res.redirect("/login")
}
Run Code Online (Sandbox Code Playgroud)

使用任何其他功能在未登录时不重定向用户会导致req.user正在运行undefined.我得到这样的用户:

router.get("/profile", isLoggedIn, function(req, res) {
    res.render("profile", {
    title: 'Gebruikersprofiel van ' + req.user.firstname + " " + req.user.lastname,
    user: req.user // get the user out of session and pass to template
    })
})
Run Code Online (Sandbox Code Playgroud)

并且没有调用isLoggedIn(这不起作用):

router.get("/", function(req, res) {
    // serve index.html
    res.render("index", { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express passport.js pug

7
推荐指数
1
解决办法
7212
查看次数

Node.js - 如何在 EJS 视图中使用局部变量

我尝试在 EJS 上使用我的局部变量。它只是一个检查用户是否已连接的变量。-> 就像此链接上的最后一篇文章一样: 如何知道用户是否使用 Passport.js 登录?

所以,

应用程序.js

app.use(function (req, res, next) {
    res.locals.login = req.isAuthenticated();
    next();
});
Run Code Online (Sandbox Code Playgroud)

查看EJS

<% if (login) { %>
      <div id="subMenuUser">
        <div class="btn-group">
          <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
            </span>Menu<span class="caret"></span>
          </button>
          <ul class="dropdown-menu pull-right" role="menu">
            <li><a href="#" role="menuitem">Menu Item 1</a></li>
            <li><a href="#" role="menuitem">Menu Item 2</a></li>
            <li><a href="#" role="menuitem">Menu Item 3</a></li>
          </ul>
        </div>
      </div>
 <% } %>
Run Code Online (Sandbox Code Playgroud)

我收到错误:

login is not defined
Run Code Online (Sandbox Code Playgroud)

我想在所有视图中使用这个变量..可能吗?

在使用此方法之前,我每次都会在渲染中发送变量,如下所示:

res.render('ad/index', { login: req.session.user });
Run Code Online (Sandbox Code Playgroud)

javascript templates ejs node.js

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

javascript ×2

node.js ×2

ejs ×1

express ×1

passport.js ×1

pug ×1

templates ×1