/ / Що таке аргумент об'єкта параметрів у місцевій стратегії PassportJS? - mysql, node.js, passport.js

Що таке цей параметр об'єкта параметрів у локальній стратегії PassportJS для? - mysql, node.js, passport.js

Отже, я перевіряю автентифікацію користувачів у моєму вузлізастосування з реляційними та паспортнимиЮЗ. Я не міг знайти інформацію про те, що робить перший аргумент локальної стратегії паспорта. Чи дає цей об'єкт схему для користувача, яка буде зберігатися в MySQL, де це зробило usernameField і passwordField приходити з?

    passport.use("local-signup", new localStrategy({
//provide a schema?
usernameField: "username",
passwordField: "password",
//pass back the entire request to the callback
passReqToCallback: true
},
//passport.authenticate() passes in the parsed out password and username
function (req, username, password, done) {
//....
}

Відповіді:

0 для відповіді № 1

У тобі 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);
});


};

РЕДАГУВАТИ Як бачите, я працюю з експресом, і я вимагаюМодель користувача. це середній додаток fullstack, який працює з mongodb і mongoose. У всякому разі, я думаю, ви будете мати можливість використовувати MySQL (я настійно рекомендую вам прочитати про ці повні генератори) https://github.com/DaftMonk/generator-angular-fullstack Якщо ви запускаєте програму, розглянути можливість змінити mysql на mongodb - expressjs-angularjs-nodejs

Сподіваюся, що це допомагає!