【发布时间】:2021-01-29 04:04:39
【问题描述】:
我在我的机器上开发了一个网站,当我在本地运行它时它运行良好。我正在使用 ExpressJS 和 Passport 进行身份验证。用于 DB 的猫鼬。
我有一个名为 passport-local-mongoose 的包,它运行良好,它简化了用户登录和注册的处理。
后端(ExpressJS)
const session = require('express-session');
const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");
app.use(session({
secret: "I dunno, a secret.",
resave: false,
saveUninitialized: false
}))
app.use(passport.initialize());
app.use(passport.session());
当我将网站部署到 heroku 时,身份验证不起作用。但它在localhost 上运行良好。
登录路径:
app.post('/login', (req, res) => {
const user = new User({
username: req.body.username,
password: req.body.password
})
req.login(user, (err) => {
if (err) return console.error(err);
passport.authenticate('local')(req, res, () => {
res.redirect('/')
})
})
})
我相信这是因为包passport-local-mongoose,包的名称暗示它只能在本地工作。
如何从passport-local-mongoose 转换为可在实时网站上运行的软件包?我可以使用哪些软件包来实现这一目标?我说passport-local-mongoose 只在本地有效吗?
我看到了this 的问题,但它似乎没有回答我的问题。
注意:我无法包含整个网站的代码,因为代码太多。
【问题讨论】:
-
你能告诉我们整个路线吗?我以前从未在
req.login回调中看到过passport.authenticate。 -
@jasonandmonte 将代码添加到问题中
标签: node.js mongoose passport.js passport-local passport-local-mongoose