【发布时间】:2021-08-04 21:37:12
【问题描述】:
passportjs 也有错误。如果您知道好的教程 passportjs,在出现错误之前,请给我发送链接。
我在 [that][1] 观看视频 youtube 和工作代码。这是github。但我想更改身份验证护照。在 modaljs 我这样做:
const mongoose = require('mongoose');
const moment = require("moment");
const passportLocalMongoose = require('passport-local-mongoose');
const userSchema = mongoose.Schema({
name: {
type:String,
maxlength:50
},
email: {
type:String,
trim:true,
unique: 1
},
password: {
type: String,
minglength: 5
},
lastname: {
type:String,
maxlength: 50
},
role : {
type:Number,
default: 0
},
image: String
});
userSchema.plugin(passportLocalMongoose, {usernameField: 'email'});
const User = mongoose.model( 'User' , userSchema );
module.exports = {User};
在 Userjs 中我这样做:
const { User } = require('../models/model');
const router = require('express').Router();
const passport = require('passport');
passport.use(User.createStrategy());
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser( async function(id, done) {
await User.findById(id, function(err, user) {
done(err, user);
});
});
router.get('/auth', (req, res) => {
// res.send(req.isAuthenticated)
if(req.isAuthenticated()){
res.status(200).json({
_id: req.user._id,
isAdmin: req.user.role === 0 ? false : true,
isAuth: true,
email: req.user.email,
name: req.user.name,
lastname: req.user.lastname,
role: req.user.role,
image: req.user.image,
});
}
else{
return res.json({
isAuth: false,
error: true
});
}
});
router.post('/register', async (req, res) => {
await User.register( {email: req.body.email}, req.body.password, (err,user)=>{
if(err) return res.json({ success: false, err });
else res.status(200).json({
success: true
});
});
});
router.post("/login", function (req, res) {
console.log(req.body);
passport.authenticate("local")(req, res, function () {
console.log("ok!");
res.json({
loginSuccess: false,
message: "Invalid email or password"
});
});
});
router.get('/logout', (req, res) => {
if(req.isAuthenticated){
req.logout();
res.status(200).send({
success: true
});
}
else return res.json({success: false});
});
module.exports = router;
在 server.js 我添加护照和这个:
app.use(passport.initialize());
app.use(passport.session());
第一次启动服务器时出现此错误:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
但是在我没有想到之后。只显示控制台 req.body。如何发现错误。我对passportjs很厌倦。我在护照本地猫鼬中找到带有插件数据库的最佳教程 passportjs。以及如何发现错误并修复它。对不起我的英语:)) [1]:https://github.com/jaewonhimnae/boilerplate-mern-stack
【问题讨论】:
-
您的
passport.authenticate呼叫看起来不正确。 passportjs.org/docs/authenticate -
上次我有喜欢的错误。但这次我认为 axios 或 redux 有一些小错误......请看:)
标签: reactjs axios passport.js passport-local passport-local-mongoose