0
我有一個Express護照本地策略的應用程序,使用Mongoose存儲用戶帳戶。我有一位自由撰稿人爲我編寫應用程序的這部分內容,因爲我無法理解如何從頭到尾構建登錄系統(我發現每個教程都以不同的方式進行)。這樣做的缺點是我不明白每個部件的作用。這是我app.js
文件:檢查用戶是否存在護照本地
const Account = require('./models/db/AccountsSchema');
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(Account.authenticate()));
passport.serializeUser(Account.serializeUser());
passport.deserializeUser(Account.deserializeUser());
,這是routes/index.js
:
router.post('/register', function(req, res) {
Account.register(new Account({
username: req.body.username,
name: req.body.name
}), req.body.password, function(err, account) {
if (err) {
console.log(err);
} else {
console.log(account);
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/login'
})(req, res, function(err, user) {
res.redirect('/');
});
}
});
});
連同:
router.post('/login',
passport.authenticate('local'),
function(req, res) {
res.redirect('/');
}
);
現在在登錄POST請求,我想有一個檢查是否存在具有該特定用戶名的用戶,以便如果密碼錯誤,至少我可以告訴用戶密碼錯誤。用戶枚舉在這裏不是安全問題。
在我的代碼中,我可以合併數據庫檢查是否存在具有指定用戶名的帳戶?
我沒有看到user.validPassword()從何而來。那是一個passport.js函數嗎? – Ric
@Ric不是它不是passport.js函數,而是在貓鼬模式中定義的自定義模型函數。 – Nivesh