/ / Wozu dient dieses Optionsobjekt in der lokalen Strategie von PassportJS? - mysql, node.js, passport.js

Was ist das Argument für das Optionsobjekt in der lokalen PassportJS-Strategie? - mysql, node.js, pass.js

Ich authentifiziere also Benutzer in meinem KnotenAnwendung mit relationalem und passportJS. Ich konnte keine Informationen darüber finden, was das erste Argument in der lokalen Passportstrategie tut. Ist dieses Objekt ein Schema für den Benutzer, das in MySQL gespeichert werden soll, wo? usernameField und passwordField komme aus?

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

Antworten:

0 für die Antwort № 1

In Ihnen server/auth/index.jsfinden Sie die verschiedenen Zuordnungen für die verschiedenen Strategien, die Sie verwenden möchten.

Dann können Sie die Strategie überprüfen:

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

Dann 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;

Dann 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);
});


};

BEARBEITEN Wie Sie sehen, arbeite ich mit express, und ich brauchedas Benutzermodell. es ist eine gemeine Fullstack-App, die mit Mongodb und Mungo läuft. Jedenfalls denke ich, dass Sie mysql verwenden können (ich empfehle Ihnen dringend, über diese Fullstack-Generatoren zu lesen) https://github.com/DaftMonk/generator-angular-fullstack Wenn Sie Ihre App starten, sollten Sie in Betracht ziehen, MySQL in mongodb - expressjs-anglejs-nodejs zu ändern

Ich hoffe es hilft !!