java - nodejs android studio和passport js登录404错误
问题描述
尝试通过我的 android 应用程序登录到我的节点 js 本地服务器时遇到问题。每次我尝试登录时都会收到 404 错误。我可以使用 Post 路由很好地注册用户,并且可以在我的 mongodb 数据库中使用用户名和密码(散列+加盐)查看它。
但是当我使用我的凭据(用户名和密码)正确登录时,我总是会收到 404 错误。我认为这意味着我的登录路线不正确。
登录我的移动应用程序帖子到登录路径并发送用户名和密码。但是在运行我的成功和失败路由时,不要发布相应的控制台日志,我会收到 404 错误。我已经检查了用户名和密码,它们是正确的。
app.post("/signup", function(req, res)
{
User.register(new User({username: req.body.username, email: req.body.email}), req.body.password, function(error, user)
{
if(error)
{
console.log(error);
res.status(400).send();
}
else
{
passport.authenticate("local")(req, res, function(){//Use the local strategy to login the user
res.status(200).send();
});
}
});
});
app.post("/login", passport.authenticate("local", {//Middleware
successRedirect: "loginsuccess",
failureRedirect: "/loginfail"
}), function(req, res){
});
app.get("/loginsuccess",isLoggedIn, function(req, res)
{
res.status(200).send();
console.log("Login worked");
});
app.get("/loginfail", function(req, res)
{
console.log("Login failed");
res.status(400).send();
});
function isLoggedIn(req, res, next){
if(req.isAuthenticated()){
return next();
}
res.redirect("/login");
}
解决方案
发现问题,
需要更改登录路由以不使用successRedirect 和failure,而是使用返回函数。
app.post("/login", passport.authenticate("local", {//Middleware
//console.log("trying login");
//successRedirect: "/",
//failureRedirect: "/fail"
}), function(req, res){
console.log("correct login");
res.status(200).json(req.user);
});
推荐阅读
- ms-access - SSMA(用于访问的 SQL Server 迁移助手)无法连接到 SQL Server
- python - 使用 Python、SQlite 和 bcrypt 在登录函数中获取与其哈希匹配的密码
- pyspark - Pyspark 使用 lpad 不接受长度函数
- excel - Excel VBA 从 Excel 表中写入数据的 SQL 查询
- ruby-on-rails - 为什么 Nokogiri 找不到这个 img 标签?
- node.js - 无法从日志缓存中检索日志
- flutter - 如何将 JSON-LD 转换为飞镖对象
- java - 尝试创建一个对象数组,数组的长度和数组中的对象都由用户确定
- python - 在 mypy 中需要一个特定类型的列表
- git - 如何解决致命问题:无法访问“https://github.com/MTaha57/Build-Portfolio-.git/”:请求的 URL 返回错误:403