私はエクスプレスアプリにフロントエンドフォームを使ってCouchDBユーザをログインさせ、そのセッションにログインを保存しようとしています。何がこれまでに以下されていますExpressJSとCouchDBでのユーザ認証
app.js:
var express = require('express');
var couchUser = require('express-user-couchdb');
var session = require('express-session');
var login = require('./routes/login');
var app = express();
app.use(couchUser({
users: 'http://localhost:5984/_users',
request_defaults: {
auth: {
user: 'admin',
pass: 'adminpw'
}
}
}));
app.use(session({ secret: 'secretstring'}));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', login);
と私のlogin.jsで:
var express = require('express');
var router = express.Router();
var couchUser = require('express-user-couchdb');
/* GET users listing. */
router.get('/', function(req, res, next) {
res.render('login', {title: 'Login'});
});
router.post('/login', function(req, res) {
// Don't know what to put here
//res.send(req.body.username)
});
module.exports = router;
を私は自分のログインで上に行く方法がわかりません。 jsルート。どんな助けもありがとうございます。
アップデート - 私は仕事に下のコードを得ることができなかったので、私はそれを完全に理解していなかったので、研究は次のソリューションに私を導く:
router.post('/', function(req, res) {
var options = {
url: 'http://localhost:5984/_session',
method: 'POST',
json: {
"name": "admin",
"password": "password"
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log('authenticated');
}else{
console.log('not authenticated');
res.redirect('/')
}
});
});
私はHttpRequesterを経由して同じ要求を行うとStatuscode 200と{"ok":true、 "name":null、 "roles":["_ admin"]}を取得しますが、nodejsを経由しても同じでなければなりません。
お返事ありがとうございます。だから、私はexpress-user-couchdbミドルウェアは必要ないと思っていますか?そして2番目:このカール要求はどこで実行すればよいですか? nodejsから呼び出されることを意味しますか? – grexwex
特にcURLリクエストである必要はありません。むしろ 'http'か' request'ライブラリを使いたいと思います。あなたのユースケースに応じて、私はこのミドルウェアを使うかどうかを決めます。もう1つのことは、それがひどく維持されていないということです(ソースコードの最終更新は2年前ですが、数週間前にCouchDB 2がリリースされました!)。 – niespodd