快递:我无法获得Passport来验证登录.注册正在进行,但您可以帮助护照登录验证吗
Express: I cant get Passport to authenticate the Login. Register is working but can you help passport Login Authentication
我可以允许用户注册电子邮件和密码。登录允许任何用户在完全没有凭据的情况下绕过身份验证。他们只需按下登录按钮就可以登录了。谢谢!
LoginController.js
myApp.controller('LoginController', ['$scope', 'DataFactory', function($scope, DataFactory){
$scope.dataFactory = DataFactory;
$scope.failedLogin = false;
$scope.loginUser = function() {
var user = {
email: $scope.email,
password: $scope.password
};
$scope.failedLogin = false;
$scope.dataFactory.factoryLoginUser(user);
};
}]);
Encryption.js模块
var bcrypt = require('bcrypt');
var SALT_WORK_FACTOR = 10;
var publicAPI = {
encryptPassword: function(password) {
var salt = bcrypt.genSaltSync(SALT_WORK_FACTOR);
return bcrypt.hashSync(password, salt);
},
comparePassword: function(candidatePassword, storedPassword) {
return bcrypt.compareSync(candidatePassword, storedPassword);
}
};
module.exports = publicAPI;
dataFactory.js
myApp.factory('DataFactory', ['$http', '$location', function($http, $location) {
var apiData = undefined;
var apiPhotoData = undefined;
var isUserLoggedIn = false;
var displayReminderMessage = false;
// Private
var privateAddNewUser = function(user) {
$http.post('/register', user).then(function(response){
console.log('Successfully added new user');
});
};
var privateLoginUser = function(user) {
console.log('sending login to server');
$http.post('/login', user).then(
function (res) {
$location.path('/search');
isUserLoggedIn = true;
},
function (err) {
$location.path('/failure');
});
};
factoryAddNewUser: function(user) {
return privateAddNewUser(user);
},
factoryLoginUser: function(user) {
return privateLoginUser(user);
},
};
return publicAPI;
}]);
UserStrategy.js
var passport = require('passport'); var localStrategy =
> require('passport-local').Strategy; var encryptLib =
> require('../modules/encryption'); var connectionString =
> require('../modules/connection'); var pg = require('pg');
>
> passport.serializeUser(function(user, done) { console.log('hola');
> done(null, user.id); });
>
> passport.deserializeUser(function(id, done) {
>
> pg.connect(connectionString, function (err, client) {
>
> var user = {};
> console.log('called deserializeUser - pg');
> var query = client.query("SELECT * FROM users WHERE id = $1", [id]);
>
> query.on('row', function (row) {
> console.log('User row', row);
> user = row;
> done(null, user);
> });
>
> // After all data is returned, close connection and return results
> query.on('end', function () {
> client.end();
> });
>
> // Handle Errors
> if (err) {
> console.log(err);
> } }); });
>
> // Does actual work of logging in passport.use('local', new
> localStrategy({ passReqToCallback: true, usernameField: 'email'
> }, function(req, email, password, done){
> pg.connect(connectionString, function (err, client) {
> console.log('called local - pg');
> var user = {};
> var query = client.query("SELECT * FROM users WHERE email = $1", [email]);
>
> //user = query;
> //
> //console.log('user is: ', user);
>
> query.on('row', function (row) {
> console.log('User obj', row);
> user = row;
>
> // Hash and compare
> if (encryptLib.comparePassword(password, user.password)) {
> // all good!
> console.log('matched');
> done(null, user);
> } else {
> console.log('nope');
> done(null, false, {message: 'Incorrect credentials.'});
> }
>
> });
>
> // After all data is returned, close connection and return results
> query.on('end', function () {
> console.log('ending the stuff');
> client.end();
> });
>
> // Handle Errors
> if (err) {
> //console.log('yup');
> console.log(err);
> }
> }); } ));
>
> module.exports = passport;
LogInRoute.js
var express = require('express');
var router = express.Router();
var passport = require('../strategies/user.js');
// Handles login form POST from index.html
router.post('/',
passport.authenticate('local', {
successRedirect: '/views/templates/search.html',
failureRedirect: '/views/templates/login.html'
})
);
module.exports = router;
app.js服务器
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var pg = require('pg');
var passport = require('./strategies/user.js');
var session = require('express-session');
var register = require('./routes/register');
var user = require('./routes/user');
var login = require('./routes/login');
var ZWSID = "X1-ZWz19ssev2coi3_1u0pu";
var Zillow = require('node-zillow');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// Passport Session Configuration //
app.use(session({
secret: 'secret',
key: 'user',
resave: 'true',
saveUninitialized: false,
cookie: {maxage: 60000, secure: false}
}));
// start up passport sessions
app.use(passport.initialize());
app.use(passport.session());
app.use('/register', register);
app.use('/login', login);
app.use(express.static('public'));
app.use(express.static('public/views'));
app.use(express.static('public/templates'));
app.use(express.static('public/fonts'));
app.use(express.static('public/images'));
app.use(express.static('public/scripts'));
app.use(express.static('public/scripts/factories'));
app.use(express.static('public/scripts/controllers'));
app.use(express.static('public/styles'));
app.use(express.static('public/styles/css'));
app.use(express.static('public/styles/scss'));
app.use(express.static('public/vendors'));
app.set('port', process.env.PORT || 5000);
app.listen(app.get('port'), function() {
});
var express = require('express');
var router = express.Router();
var passport = require('passport'); // ../strategies/user.js
router.post('/',
passport.authenticate('local'),
function (req, res) {
res.sendStatus(200);
});
module.exports = router;
相关文章:
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 向Hot Towel SPA添加用户身份验证登录页面
- 快递:我无法获得Passport来验证登录.注册正在进行,但您可以帮助护照登录验证吗
- angular2应用程序的身份验证登录页面
- 如何在 javascript 中单击登录按钮时通过发布请求验证登录
- 使用 javascript 验证登录表单
- 如何在有人使用令牌身份验证登录之前允许多个 URL,Angular
- 节点.js验证登录表单
- 使用谷歌验证登录所需的时间
- JS验证登录表单-我出错的地方
- 如何从nodejs检查用户是否在servlet/jsp应用程序中进行了身份验证(登录)
- Facebook身份验证登录不会刷新页面
- 如何在sharepoint中使用Javascript验证登录用户
- 验证登录&使用jquery验证插件重定向到成功页面
- 如何让用户看到我的谷歌分析图表数据,而无需进行身份验证/登录过程
- 这种对用户进行身份验证/登录的方法安全吗?
- Angularjs的HTTP POST调用在部署中验证登录失败-返回400错误
- MongoDB + Express:如何使用db.collection(). findone()或.find()验证登录
- FB.Event.subscribe身份验证.登录未被触发
- Javascript验证登录表单字段必须不为空,并包含""