iRo*_*tia 5 node.js passport.js
我试图了解护照策略是如何运作的.
考虑我用于验证的这些api路由.
router.get("/google", passport.authenticate('google', { scope: ['profile', 'email'] }));
router.get("/google/callback", passport.authenticate('google'), (req, res) => {
res.redirect("http://localhost:3000/")
})
Run Code Online (Sandbox Code Playgroud)
这是护照策略
const passport = require('passport')
const GoogleStratergy = require('passport-google-oauth20')
const keys = require("./key.js")
const User = require("../models/user-model.js")
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((id, done) => {
User.findById(id).then((user) => {
done(null, user) //pass it in req of our routes
})
})
passport.use(
new GoogleStratergy({
//Options for the stratergy
callbackURL: "/auth/google/callback",
clientID: keys.google.clientID,
clientSecret: keys.google.clientSecret
}, (accessToken, refreshToken, profile, done) => {
User.findOne({userId: profile.id }).then((currentUser) => {
if (currentUser) {
done(null, currentUser)
} else {
//Changing Image String
let oldURL= profile.photos[0]["value"]
let newURL = oldURL.substr(0, oldURL.length-2);
newURL = newURL + "250"
//Creating Mongoose Database
new User({
username: profile.displayName,
userId: profile.id,
image: newURL,
email: profile.emails[0]["value"]
}).save().then((newUser) => {
console.log("new user created", newUser)
done(null, newUser)
})
}
})
})
)
Run Code Online (Sandbox Code Playgroud)
现在,我想我明白这里发生了什么,但我在这里无法理解的一件事是......
怎么
passport.use(
new GoogleStratergy({
//Options for the stratergy
Run Code Online (Sandbox Code Playgroud)
在这里被称为?我的意思是我没有看到任何导出语句,那么它如何与Node App相关联?或者护照如何在幕后知道谷歌策略的位置**
另外,在我们通过护照完成后,确认一下.它去序列化?
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |