- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个路由
和一个中间件
,如下所示:
当我们这样做时:
//middleware
router.use((req, res, next) => {
// check header or url parameters or post parameters for token
let token = req.body.token || req.query.token || req.headers['x-access-token'],
// verifies secret and checks exp
jwt.verify(token, config.secret, (err, decoded) => {
if (err) {
return res.json({
success: false,
message: 'Failed to authenticate token.'
});
} else {
// if everything is good, save to request for use in other routes
res.locals.test = "test";
req.somevariable = "variable1";
console.log("res.locals.test inside middleware ", JSON.stringify(res.locals.test));
console.log("req.somevariable inside middleware ", JSON.stringify(req.somevariable));
next();
}
});
next();
});
//TestRoute
router.get('/TestRoute', (req, res) => {
console.log("res.locals.test outside middleware ", JSON.stringify(res.locals.test));
console.log("req.somevariable outside middleware ", JSON.stringify(req.somevariable));
});
req.somevariable
和 res.locals.test
的值在 middleware
外部是未定义
当我们这样做时:
//middleware
router.use((req, res, next) => {
res.locals.test = "test";
req.somevariable = "variable1";
console.log("res.locals.test inside middleware ", JSON.stringify(res.locals.test));
console.log("req.somevariable inside middleware ", JSON.stringify(req.somevariable));
next();
});
//TestRoute
router.get('/TestRoute', (req, res) => {
console.log("res.locals.test outside middleware ", JSON.stringify(res.locals.test));
console.log("req.somevariable outside middleware ", JSON.stringify(req.somevariable));
});
req.somevariable
和 res.locals.test
的值在middleware
外部可用。
这里有什么问题吗?
最佳答案
res.locals.VARIABLENAME = req.user
.ejs
或使用该变量进行动态渲染时,
VARIABLENAME
(无论您将其设置为什么变量)都可能显示为未定义,您可能会收到类似以下错误变量名未定义。
这对于 res.locals
来说是一个奇怪的现象:当您想在渲染中使用设置为 res.locals
的变量名称时,您必须定义 req.user
在渲染文件的函数中!
后端:res.locals.currentUser = req.user
//THIS FUNCTION WILL RENDER PERFECTLY LETTING ME USE currentUser in my .ejs file
upgradeForm(req, res, next) {
let saved = req.user;
if(req.user){
res.render("users/upgrade");
} else{
req.flash("notice", "You've successfully signed in!");
res.redirect("/");
}
}
但是
//THIS FUNCTION WILL SAY currentUser is UNDEFINED IN MY .ejs file
upgradeForm(req, res, next) {
if(req.user){
res.render("users/upgrade");
} else{
req.flash("notice", "You've successfully signed in!");
res.redirect("/");
}
}
除了工作函数渲染将 req.user
设置为变量(您甚至不必使用该变量)之外,没有代码差异。我花了 9 个小时才解决这个问题,但现在你知道了!
关于javascript - 为什么 req.somevariable 和 res.locals 不能与 jwt 回调一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43741157/
(null != someVariable) 和 (someVariable != null) 有什么区别?我看到很多人在比较中首先使用“null”。哪个更好,为什么? 最佳答案 它们是等价的。 但是
在 JavaScript 中,您可以在变量名之前(pre-increment)或之后(post-increment)使用 ++ 运算符。这些递增变量的方法之间有什么区别(如果有的话)? 最佳答案 与其
愚蠢的问题我明白了..但这两个陈述之间有什么区别 if( null == this.someVariable) { //do something } and if( this.someVariabl
Python 中的构造函数通常如下所示: class SomeClass: def __init__(self, a, b = None, c = defC): self.a
有人可以解释以下两个用 php 编写的代码片段的区别吗?一个使用 $this->task,另一个简单地使用 $tasks 来存储对象。 class Foo { public $tasks; func
所以我尝试这样做: #include //For cout/cin #include //For ifstream/ofstream using namespace std; int main()
我正在使用 this.props.someVariable 将变量从一个组件传递到另一个组件。我想使用 console.log() 调试变量。 我无法在 console.log(this.props.
我只是在 Playground 上尝试一些代码,我遇到了这种情况。我无法理解为什么 someVariable 的值没有在下面的代码中更新。有人可以向我解释这是什么行为吗? var someVariab
我是 AngularJS 的新手,所以我的错误可能在代码中的任何地方,但我找不到它。我正在使用 $HTTP GET 方法来检索位于某些服务器/页面中的数据。检索该数据(JSON)后,我想使用该字符串来
我的网页“mywebpage.php”是通过“someotherpage.php”的“GET”到达的: // In someotherpage.php -- go to mywebpage.php
我正在使用 tslint,并收到错误。 'myVariable' is declared but its value is never read. 我访问了记录规则的网站 https://palant
在我们的系统中,我们不能总是确定参数是作为字符串还是 bool 值(动态类型 ahoi!),因此,如果例如我们想检查某个标志是否作为 true 传递(因此 bool 值 true 或字符串“true”
所以我有一个主要的 JSP 索引页面,“index.jsp”,它有几个包含。类似的东西, “include.jsp”包含一个字符串“String basePath = request.get
我真的很生气,因为在用 python 编写一个简单的、说教性的端口扫描器时,我无法解决一个问题。代码如下: def main(): parser = optparse.OptionParser
我们有一个路由和一个中间件,如下所示: 当我们这样做时: //middleware router.use((req, res, next) => { // check header or ur
我试图将我的 session 变量传递到我的 Handlebars 模板,但我卡住了。现在我在我的 app.configure 函数中使用它: app.use(function(req, res, n
第一次发帖,请多多关照。我对编码相当陌生,正在努力了解 SWIFT 及其可选项目。非常感谢专业人士的一些建议! 我正在编写一个简单的应用程序,用户在其中输入文本字段,然后在应用程序中进行一些乘法运算,
我是一名优秀的程序员,十分优秀!