[英]Unusual call to express get method. Should be wrong but runs well
我正在學習使用Google的Oauth 2.0策略實施SSO。 在此期間,我遇到了app.get方法的異常用法。 Express的文檔中未定義此類函數調用。
我參考了以下兩頁,以確保我沒有記錯:
Express js文檔只有兩種調用:
1. app.get(name)
2. app.get(path, callback [, callback ...])
現在,passwordjs.org中的調用似乎使用的是第二種形式,但是請注意,第二個參數(passport.authenticate)實際上是函數調用,而不是函數定義(即回調),因為它應該按照上面的#2進行:
app.get('/auth/google',
passport.authenticate('google', { scope: 'https://www.google.com/m8/feeds' });
我預計會出現運行時錯誤,因為對app.get的調用與任何已記錄的函數調用類型都不匹配。 但是,函數調用運行良好,可以完成預期的任務。 怎么樣?
從Passport
npm頁面
Passport是Node.js的Express兼容身份驗證中間件
這是passport
工作方式,它公開了與表達期望的callback
兼容的方法。
表達期望的最簡單的callback
簽名是:
(req, res) => { /* something */ }
因此,任何返回期望簽名的另一個函數的函數都可以作為中間件傳遞。
例如
const app = express()
function myFunc(some) {
return (req, res) => {
res.json(some);
}
}
app.get('/', myFunc('something'));
* Express文檔還在上面的鏈接中的可配置中間件下說明了類似的中間件功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.