2013-07-17 4 views
0

Это резюме об аутентификационном методе.
Я пытался использовать express.basicAuth, но это заставляет браузер попросить пользователя и передать, и мне нужно использовать свою собственную страницу входа в систему, как Google, facebook Yahoo ...экспресс, аутентификация без 401

Правильно ли это? Есть ли лучший способ сделать это?
Я хочу, чтобы избежать модулей, таких как паспорт, если смогу.

Я хочу использовать такую ​​функцию, используя auth middleware (app.get('/loggedin', auth, function(req, res)...) var express = require ('express'); var app = express();

app.use(express.cookieParser()); 
var RedisStore = require('connect-redis')(express); 
app.use(express.session({ 
    store: new RedisStore({ 
    host: 'localhost', 
    port: 6379, 
    db: 2, 
    pass: 'RedisPASS' 
    }), secret: '1234567890QWERTY' 
})); 

var auth = function(req, res, next) { 
    if (req.session.authStatus === 'loggedIn') 
     next(); 
    else 
     res.redirect('/login'); 
}; 

app.get('/', function(req, res) { 
    console.log("/"); 
    res.send('not authenticate'); 
}); 

app.get('/signin', function(req, res) { 
    console.log("/signin"); 
    if (req.body.user && req.body.pass) 
    { 
     req.user = req.body.user; 
     req.remoteUser = req.body.user; 
     req.session.authStatus = 'loggedIn'; 

     req.session.lastPage = '/signin'; 
     res.redirect('/loggedin'); 
    } 
    else 
     res.redirect('/login'); 
}); 

app.get('/loggedin', auth, function(req, res) { 
    if(req.session.lastPage) { 
     res.write('Last page was: ' + req.session.lastPage + '. '); 
    } 

    req.session.lastPage = '/loggedin'; 
    res.write('Yeeeeeeeeeee'); 
    res.end(); 
}); 


app.get('/loggedin2', auth, function(req, res) { 
    console.log("/loggedin2"); 
    if(req.session.lastPage) { 
     res.write('Last page was: ' + req.session.lastPage + '. '); 
    } 

    req.session.lastPage = '/loggedin2'; 
    res.write('WoWWWWW!!!!!!'); 
    res.end(); 
}); 

app.get('/logout', auth, function(req, res) { 
    console.log("/logout"); 
    req.session.destroy(); 
}); 

app.get('/login', function(req, res) { 
    console.log("/notlogged"); 
    res.send('enter user and pass...'); 
}); 

app.listen(process.env.PORT || 8080); 
+0

на мой взгляд, все хорошо. очень близко к тому, что я реализовал. – gustavohenke

ответ

0

Вы можете использовать модуль passport промежуточного слоя в НОМ - passport-local модуля обеспечивает аутентификацию против локального ресурса, таких как базы данных.

+0

Я пытался использовать этот модуль, но если пользователь пытается получить доступ к странице без успешной регистрации, паспорт отправляет 401 в браузер, и браузер показывает свой по умолчанию для пользователя и пароль, я пытался его изменить, но я не мог " т. Затем я осуществил эту реализацию без паспорта. –

Смежные вопросы