0

認証方法についてのレジュメです。
を使用しようとしましexpress.basicAuthたが、ブラウザが強制的にユーザーとパスを要求し、google、facebook yahoo などの独自のログイン ページを使用する必要があります。

これは正しいですか?これを行うより良い方法はありますか?
可能であれば、パスポートなどのモジュールは避けたいです。

(app.get('/loggedin', auth, function(req, res)...) auth middleware 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

passportnpmでミドルウェア モジュールを使用できます。このpassport-localモジュールは、データベースなどのローカル リソースに対する認証を提供します。

于 2013-08-14T19:41:50.933 に答える