В вас server/auth/index.js
, вы найдете различные отображения для различных стратегий, которые вы хотите использовать.
Тогда вы будете иметь возможность проверить стратегию:
var express = require('express');
var passport = require('passport');
var config = require('../config/environment');
var User = require('../api/user/user.model');
// Passport Configuration
require('./login/passport').setup(User, config);
var router = express.Router();
router.use('/local', require('./local/index'));
Затем в ./local/index.js
var passport = require('passport');
var auth = require('../auth.service.js');
var router = express.Router();
router.post('/', function(req, res, next) {
console.log.req;
passport.authenticate('local', function (err, user, info) {
var error = err || info;
if (error) return res.json(401, "THAT´S BAD");
if (!user) return res.json(404, {message: 'Something went wrong, please try again.'});
var token = auth.signToken(user._id, user.role);
res.json({token: token, user:user});
})(req, res, next)
});
module.exports = router;
Затем в ./local/passport.js
var passport = require('passport');
var Local = require('passport-local').Strategy;
exports.setup = function (User, config) {
passport.use("local", new Local({
usernameField: 'apikey',
passwordField: 'apisecret'
},
function(apikey, apisecret, done) {
//THIS FUNCTION IS THE ONE YOU HAVE TO CHANGE TO YOUR MYSQL CODE TO CHECK WHETHER THE USER IS REGISTERED
User.findOne({
apikey: apikey,
apisecret: apisecret
}, function(err, user) {
if (!user) {
return done("YOUR API KEY HAS NOT AUTHORIZATION", false, { message: 'This email is not registered.' });
}
return done(null, user);
});
}
));
passport.serializeUser(function(user, done) {
done("USER", user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
};
EDIT Как вы видите, я работаю с выражением, и мне нужен пользователь m Одел. это среднее приложение fullstack, которое работает с mongodb и mongoose. Во всяком случае, я думаю, Там вы можете быть в состоянии использовать MySQL (я настоятельно рекомендую вам прочитать об этих fullstack генераторов) https://github.com/DaftMonk/generator-angular-fullstack Если вы kickstarting приложения, считают изменить MySQL для MongoDB - expressjs-angularjs-nodejs
Надежда помогает !!
Нет, он предоставляет информацию о том, какие поля ввода в вашей форме на стороне клиента будут иметь значение атрибутов 'name'. Если это '' вы будете передавать '{usernameField: 'name'}' – laggingreflex
Я понимаю это, но зачем использовать json для этого? Почему бы просто не запустить запрос 'INSERT'? –
Я все равно запускаю запрос в скрытом теле обратного вызова, но зачем указывать 'usernameField'? Почему бы просто не запросить MySQL для учетных данных? –