Im, использующий NodeJS, ExpressJS, Mongoose, паспортJS & connect-обеспечить-логин. Аутентификация пользователей работает отлично.NodeJS ExpressJS PassportJS - только для административных страниц
....
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('/');
});
Теперь, я хочу добавить ограничения на некоторые маршруты, которые будут доступны только администратору. Как я могу это сделать? например /admin/*
var schema = new mongoose.Schema({
name: String,
email: String,
password: String,
isAdmin: { type: Boolean, default: false }
});
mongoose.model('User', schema);
Подсказка? Благодаря
Я добавил ваше решение, но я думаю, что что-то пропустил, он всегда несанкционирован. –
работает, используя 'обеспечитьLoggedIn ('/ login'),' спасибо –
@JRGalia, вы совершенно правы, я отредактировал свой ответ, чтобы исправить эту ошибку :) – robertklep