我正在努力在节点应用程序中设置身份验证。我决定使用EJS作为模板解决方案,并使用PassportJS进行身份验证。这些都在ExpressJS上运行。我遇到的问题是,我需要某种方法来使req.isAuthenticated()
或任何变量及其属性在模板中全局可用。这是一个问题,因为我决定在所有模板上使用的部分中进行一些条件渲染。如果要尝试使此应用程序正常工作,则需要将每个res.render("template")
传递给包含req.isAuthenticated()
的对象。我认为这不是最好的方法。我缺少这个问题的解决方案吗?
这里是我当前设置的示例
header.ejs(PARTIAL)]
<!DOCTYPE html> <html> <head> <title>formla</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" /> <link rel="stylesheet" href="/stylesheets/style.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> </head> <body> <head> <nav> <ul> <li><a href="/">Home</a></li> <li><a href="/protected">Profile</a></li> <%if(!isUserAuth){%> <li><a href="/register">Register</a></li> <li><a href="/login">Login</a></li> <%}else{%> <li><a href="/logout">Logout</a></li> <%}%> </ul> </nav> </head>
index.ejs
<%- include("./partials/header.ejs") -%> <div class="container"> <h1>Home</h1> <a href="/register">Register</a> <br /> <a href="/login">Login</a> </div> <%- include("./partials/footer.ejs") -%>
任何帮助将不胜感激。
我正在努力在节点应用程序中设置身份验证。我决定使用EJS作为模板解决方案,并使用PassportJS进行身份验证。这些都在ExpressJS上运行。我是问题...
Express res.locals对象用于此目的。您只需要为私有路由添加auth检查中间件。并将其添加到响应的locals对象中,该对象将可以在ejs中访问。