2013-07-17 26 views
0

這是關於認證方法的簡歷。
我試圖用express.basicAuth,但它迫使瀏覽器向用戶而過,我需要用我自己的登錄頁面,像谷歌,Facebook雅虎...表示,不帶401的認證

這是正確的?有沒有更好的方法來做到這一點?
我想避免模塊,如護照,如果我可以。

我想使用這樣的功能,使用認證中間件(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中間件模塊在NPM - 在passport-local模塊提供了對本地資源的認證(如數據庫)。

+0

我試過使用這個模塊,但是如果用戶試圖訪問一個沒有成功登錄的頁面,那麼護照會向瀏覽器發送401並且瀏覽器顯示他的默認用戶名和密碼框,我試圖改變它,但是我不能'噸。然後我沒有護照就做了這個實施。 –