Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – NodeJS ExpressJS PassportJS – 仅适用于管理员页面大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用NodeJS,Expressjs,Mongoose,passportJS&连接 – 确保登录.验证用户工作完美. @H_673_5@ @H_673_5@
....
var passport = require('passport'),LocalStrategy = require('passport-local').Strategy,ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;

var app = express();
...
app.use(passport.initialize());
app.use(passport.session());    
...


passport.use(new LocalStrategy({usernameField: 'email',passwordField: 'password'},function(email,password,donE) {
  User.findOne({ 'email': email,'password': password },{'_id': 1,'email':1},function(err,user) {

    if (err) { return done(err); }

    if (!user) {
      return done(null,false,{ message: 'Incorrect username.' });
    }

    return done(null,user);
  });
}));

passport.serializeUser(function(user,donE) {
  done(null,user);
});

passport.deserializeUser(function(user,donE) {  
  done(null,user);
});

app.post('/login',passport.authenticate('local',{ successReturnToOrRedirect: '/home',failureRedirect: '/login' }));

app.get('/logout',function(req,res){
  req.logout();
  res.redirect('/');
});
@H_673_5@现在,我想对某些路由添加限制,只能由admin访问.我怎样才能做到这一点?例如/管理/ *

@H_673_5@
var scheR_997_11845@a = new mongoose.scheR_997_11845@a({
    name: String,email: String,password: String,isAdmin: { type: Boolean,default: false }
});

mongoose.model('User',scheR_997_11845@a);
@H_673_5@任何提示?谢谢

解决方法

您可以将自定义中间件附加到/ admin / *路由,以便在任何更具体的/ admin / routes上传递请求之前检查管理状态: @H_673_5@ @H_673_5@
var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;
...
var requiresAdmin = function() {
  return [
    ensureLoggedIn('/login'),res,next) {
      if (req.user && req.user.isAdmin === truE)
        next();
      else
        res.send(401,'Unauthorized');
    }
  ]
};

app.all('/admin/*',requiresAdmin());
app.get('/admin/',...);

大佬总结

以上是大佬教程为你收集整理的node.js – NodeJS ExpressJS PassportJS – 仅适用于管理员页面全部内容,希望文章能够帮你解决node.js – NodeJS ExpressJS PassportJS – 仅适用于管理员页面所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。