几个问题。我使用以下代码在我的应用程序中设置身份验证:
passport.use(new LocalStrategy(function(username, password, done){
Users.findOne({ username : username},function(err,user){
if(err) { return done(err); }
if(!user){
return done(null, false, { message: 'Incorrect username' });
}
hash( password, user.salt, function (err, hash) {
if (err) { return done(err); }
if (hash == user.hash) return done(null, user);
done(null, false, { message: 'Incorrect password' });
});
});
}));
app.get('/admin', function (req, res){
res.render('login.jade');
});
app.post('/admin', function (req, res){
passport.authenticate('local', { successRedirect: '/main',
failureRedirect: '/login',
failureFlash: true });
});
用户是包含username
,password
和hash
的数据库架构。
第一个也是最明显的问题是,如何向数据库添加新用户?我特别不想要一个注册页面,但想手动添加每个新用户。有没有办法手动执行此操作?
接下来,如何修改现有路由,以便仅在用户通过身份验证后才能使用?例如,我有:
app.get('/comment/:commentID', admin.renderComment);
上面的renderCommit
是一个大型处理函数,但只有在用户通过身份验证后才能访问此页面。我该如何检查?
答案 0 :(得分:0)
从独立脚本中创建新用户应该相对简单:
// Load your models, set up database connection, etc.
...
// Create a new user:
Users.create({
username : USERNAME,
password : HASHED_PASSWORD,
salt : GENERATED_SALT,
}, function(err, user) {
if (err) {
console.error('Error creating user:', err.message);
} else {
console.log('User created successfully');
}
});
至于确保用户在请求某些路线时登录,您可以使用a simple middleware for that:
app.get('/comment/:commentID', ensureAuthenticated, admin.renderComment);