【问题标题】:How find error authentication passport and react?如何找到错误认证护照并做出反应?
【发布时间】: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

【问题讨论】:

标签: reactjs axios passport.js passport-local passport-local-mongoose


【解决方案1】:

请尝试 res.status(200).send 而不是 res.status(200).json

【讨论】:

  • 它无能为力。但是当我使用邮递员发送数据后端时一切正常。但发送数据前端无法工作。为什么我不知道。请参阅 _actions 和登录页面。帮帮我
猜你喜欢
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
相关资源
最近更新 更多