/ / Qual è l'argomento oggetto opzioni nella strategia locale PassportJS? - mysql, node.js, passport.js

Per cosa è questo argomento oggetto opzioni nella strategia locale PassportJS? - mysql, node.js, passport.js

Quindi, sto autenticando gli utenti nel mio nodoapplicazione con relazionale e passportJS. Non sono riuscito a trovare informazioni su quale sia il primo argomento nella strategia locale del passaporto. È questo oggetto che fornisce uno schema per l'utente da memorizzare in MySQL, dove ha fatto usernameField e passwordField vieni?

    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) {
//....
}

risposte:

0 per risposta № 1

In te server/auth/index.js, troverai le diverse mappature per le diverse strategie che desideri utilizzare.

Quindi, sarai in grado di controllare la strategia:

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"));

Quindi, in ./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;

Quindi, in ./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);
});


};

MODIFICARE Come vedi, io lavoro con express, e ho bisognoil modello utente. è un'app media a pieno formato che funziona con mongodb e mangusta. Comunque penso che sarai in grado di usare mysql (ti raccomando caldamente di leggere su quei generatori fullstack) https://github.com/DaftMonk/generator-angular-fullstack Se stai dando il via alla tua app, considera di cambiare mysql in mongodb - expressjs-angularjs-nodejs

Spero che sia d'aiuto !!