所以我使用PAM在我的快递应用中验证用户身份。但是,我无法找到正确的文档和教程,了解如何实现它以及配置会话。
这是PAM的npm模块,名为exit(0);
authenticate-pam
关于我将如何编写本文的问题仍然存在,我知道我也希望实现会话,所以我也担心如何将其与PAM模块集成。以下是我在var pam = require('authenticate-pam');
pam.authenticate('username', 'password', function(err) {
if(err) {
console.log(err);
}
else {
console.log("Authenticated!");
}
});
文件中放置内容的草稿。
routes/index.js
就我而言,我已经获得了认证。至于会话,这是我在我的应用程序的var express = require('express');
var passport = require('passport');
var router = express.Router();
var pam = require('authenticate-pam');
// GET Commands ==========
router.get('/', function(req, res, next) {
res.render('login', { title: 'Login', layout: 'base-layouts/login-layout.hbs'});
});
// POST Commands ==========
router.post('/', function (req, res) {
var usernameCaptured = req.body.username;
var passwordCaputured = req.body.password;
console.log('Username: ' + usernameCaptured); // For debuging
console.log('Password: ' + passwordCaputured); // For debuging
pam.authenticate(usernameCaptured, passwordCaptured, function(err) {
if(err) {
console.log("Not Authenticated");
//Send to login page with error.
}
else {
console.log("Authenticated!");
res.render('dashboard', { title: 'Dashboard', layout: 'base-layouts/dashboard-layout.hbs'});
}
});
});
module.exports = router;
(主文件)中放置的内容。
app.js
看起来很简单,但是没有很多教程,很难说出我可以使用哪些教程。他们中的一些人甚至不解释他们在做什么。希望有人可以帮助我。
答案 0 :(得分:0)
试试这个......如果你得到一个SIGTERM,你必须以root身份运行。不确定解决方案是什么。
var passport = require('passport');
var Strategy = require('passport-local').Strategy;
var pam = require('authenticate-pam');
module.exports = function(passport){
// =====================================
// Custom Strategy =====================
// =====================================
passport.use('pam', new Strategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, username, password, done) {
pam.authenticate(username, password, function(err) {
if(err) {
done(null, false, req.flash('loginMessage', err));
}else{
done(null, username);
}
}, {serviceName: 'login', remoteHost: 'localhost'});
})
);
// =====================================
// PASSPORT SERIALIZE ==================
// =====================================
passport.serializeUser(function(username, done) {
done(null, username);
});
// used to deserialize the user
passport.deserializeUser(function(username, done) {
done(null, username);
});
};