你可以通过passport.js.实现它
您可以在 passport.js 中设计一个本地策略来进行身份验证。有一个可用的 NPM 包。查看passport-local。
从您的问题来看,您似乎正在使用 SQL 数据库。我不确定如何使用 SQL 数据库使用护照。有一个thread 谈到了将护照与 SQL 一起使用。请检查一下。
我可以向你展示我如何将 passport.js 与 mongoose 一起使用。
// 我的用户模型:
var mongoose = require('mongoose');
var passportLocalMongoose = require('passport-local-mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
username: String,
password: String
});
userSchema.plugin(passportLocalMongoose);
var User = mongoose.model('user', userSchema);
module.exports = User;
//在app.js中添加这个
var express = require('express');
var app = express();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('/path/to/user/model');
passport.use('user', new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.post('/register', function(req, res){
User.register(new User({
username: req.body.username
}),
req.body.password,
function(err, user) {
passport.authenticate('local')(req, res, function() {
return res.status(200).json({
success: true,
message: 'Registration Successful!'
});
});
);
});
app.post('/login', function(req, res){
passport.authenticate('user', function(err, user, info) {
if (err) {
//handle err
}
if (!user) {
//user not found
}
req.logIn(user, function(err) {
if (err) {
//handle err
}
//Login successful!
});
})(req, res, next);
});
希望你觉得它有用!