【发布时间】:2021-10-24 07:26:05
【问题描述】:
我是网络开发的新手。我编写了一个 MERN 应用程序,React 应用程序在 localhost:3000 上运行,后端在 localhost:5000 上运行。我正在使用护照本地猫鼬进行身份验证。 Auth 运行良好,但浏览器中没有创建 cookie。
任何帮助表示赞赏。这是我的验证码:
passport.authenticate('local', function (err, user, info)
{
if (err) {
console.log("Auth error: " + err); // FIXME
res.json({success: false, message: err})
return;
}
if (! user) {
console.log("Username or password incorrect"); // FIXME
res.json({success: false, message: 'Username or password incorrect'})
return;
}
req.login(user, function(err)
{
if (err) {
console.log("login error: " + err); // FIXME
res.json({success: false, message: err})
return;
}
// perform a deep copy of user
const newUser = JSON.parse(JSON.stringify(user));
// get user without salt and hash
const {salt, hash, ...userNoSaltHash} = newUser
res.json({success: true, message: "Authentication successful", user: userNoSaltHash});
});
})(req, res);
这是我的 server.js
require('dotenv').config({path: './config/config.env'});
const express = require('express');
const connectDB = require('./config/db.js')
const errorHandler = require('./middleware/error.js');
const session = require('express-session');
const passport = require('passport');
const cors = require('cors');
const port = process.env.PORT || 5000;
// connect to mongoDB database
connectDB();
const app = express();
// setup CORS: https://www.youtube.com/watch?v=PNtFSVU-YTI
app.use(cors({
origin: 'http://127.0.0.1:3000',
// FIXME methods: ['GET', 'POST'],
credentials: true,
}));
// FIXME do we need this?
app.use(express.static('public'));
// user body-parser get data JSON from body
app.use(express.json());
// FIXME read the docs and ensure these are what we want
app.use(session({
//secret: process.env.SESSION_SECRET, // FIXME
secret: 'this is one jsaldfjklsfjklsdf f fjklsfj sjflsdfjdsjfdsf.',
resave: false,
saveUninitialized: false,
//cookie: {secure: true}
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/', require('./routes/auth'));
const User = require('./models/User.js')
passport.use(User.createStrategy());
// use static serialize and deserialize of model for passport session support
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
// setup custom error handler; THIS SHOULD BE LAST PIECE OF MIDDLEWARE
app.use(errorHandler);
// middleware to print debug info
// app.get('/login', (req, res) =>
// {
// console.log("Get: login");
// res.send('Hello!')
// });
const server = app.listen(port, () => {console.log(`App listening on port ${port}`)});
process.on('unhandledRejection', (err, promise) =>
{
console.log(`### Error: ${err}`);
server.close(() => process.exit(1));
});
【问题讨论】:
标签: passport.js passport-local passport-local-mongoose