0

这是一份关于身份验证方法的简历。
我尝试使用express.basicAuth,但它强制浏览器询问用户并通过,我需要使用我自己的登录页面,如 google、facebook yahoo...

这是正确的吗?有没有更好的方法来做到这一点?
如果可以的话,我想避免使用像护照这样的模块。

我想使用这样的函数,使用 auth 中间件(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);
4

1 回答 1

0

您可以passport在 npm 中使用中间件模块——该passport-local模块提供对本地资源(例如数据库)的身份验证。

于 2013-08-14T19:41:50.933 回答