我正在使用 Node.js(Express.js 和 Moongose.js)构建 REST Api,如果用户是第一次用户(不是在数据库中可用)或登录(应用程序/登录)如果用户已经是返回用户(意味着用户在数据库中可用)。
这是代码(我使用 ECMAScript 2015 代码,使用 Node 4.2.1 并使用严格模式)。
// Signup process happens here
app.post('/signup', passport.authenticate('local-signup', {
successRedirect: '/profile',
failureRedirect: '/signup'
}));
// Hit server to login
app.post('/login', passport.authenticate('local-login', {
successRedirect : '/profile', // redirect to the secure profile section
failureRedirect : '/login', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}));
并且重定向发生在这段代码中。
app.post(‘/loginorsignup', (req, res) => {
let username = req.body.email; // actually email used for facebook login
let password = req.body.id; // actually facebook tooken id
User.findOne({'local.username': username}, (err, user) => {
if(err) {
return res.json({error: {message: err}});
}
if(user){
return res.redirect(307,`/login?username=${username}&password=${password}`);
} else {
return res.redirect(307, `/signup?username=${username}&password=${password}`);
}
});
});
输入的json是
{
“email” : “some@email.com”,
“id”: “someid”
}
此设置在使用 postman (Web api、chrome 应用程序)时完美运行,但在使用 android 时我得到了 HTTP 错误 307 - 临时重定向(如何修复它,应该在 Android 应用程序或 Node.js 中修复)
为什么要这样做?
Android应用程序使用facebook登录系统,在成功登录facebook后,它会将数据发送到服务器,服务器将其存储并标记为已登录,并且登录用户访问许多使用passport.js进行身份验证的路由
请帮助我了解有关 REST API 的更多信息。如果您认为这是不好的方法,那么请我提供一些链接,展示如何在 REST API 中处理相同的场景
谢谢
最佳答案
大部分 URL 重定向仅发生在低级别 URL 中。
此错误发生在两种情况下:- 1) Web 服务器未在 307 响应中提供替代 URL 2) 重定向总数超过5次。
如何修复它:-
首先你要检查IP名称,以便我们判断帐户是否准确。如果您的 ISP 已配置某些内容,则对该名称的访问应重定向到另一个名称,并且该名称应该是永久的。您将需要更新 CheckUpDown 帐户,以便您可以开始使用新名称。
您将需要更新新的 URL。如果是临时重定向,则您必须将原始 IP 名称恢复到以后的日期,以便重定向不再起作用。
关于javascript - HTTP 错误 307 - Node.js (Express)、passport.js、mongoose.js 和 Android 应用程序中的临时重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33594399/