通常情況下,在app.use()中傳遞一個函式作為回呼,像這樣:
const express = require('express')。
const app = express()。
app.use(function(req, res, next) {
console.log('Time:', Date.now() )。)
next()。
});
在node-expose-sspi的情況下,卻傳遞了一個方法:
const express = require('express')。
const { sso } = require('node-expose-sspi')。
const app = express()。
app.use(sso.auth()); //store something in req.sso.
app.use((req, res, next) => {
res.json({
sso: req.sso,
});
});
為什么方法是用()傳遞的?如果它使用(),為什么它沒有立即被呼叫(沒有引數)?
另外,我怎樣才能將一個方法包裹在一個回呼函式中,例如:
app.use(myCallback)。
function myCallback(req, res, next) {
sso.auth(); //req.sso未定義。
}
uj5u.com熱心網友回復:
app.use(sso.auth()。
呼叫sso.auth(),app.use()其回傳值。
你可以發現在node-expose-sspi source中,.auth()確實回傳一個新的中間件函式。
至于第二個問題
另外,我怎樣才能將一個方法包裹在一個回呼函式中呢
你不應該這樣做--Express會依次呼叫你的
used中間件;隨后的回呼會訪問前一個中間件注入到請求中的東西。如果你因為某些原因真的需要這樣做,
const ssoAuth = sso.auth()。 function myCallback(req, res, next) { ssoAuth(req, res, () => { //任何常規的`myCallback`中的內容。 next()。 }); } ``轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327639.html
標籤:
上一篇:MySQL的條件過濾器處理
