【发布时间】:2018-05-20 04:16:38
【问题描述】:
我的应用在 angularJs 1.6 中构建,MEAN 堆栈运行良好,我正在使用护照进行身份验证。
当我决定用 ionic 测试它时,应用程序本身运行良好(文件基本相同),但使用护照的身份验证被破坏
我可以注册和登录用户,但是当我想检查用户是否在我的服务器上使用 req.isAuthenticated() 登录时,它总是回答 false。
我认为这是因为当我从我的普通 Angular 应用程序发出请求时,该请求包含一个带有密码和电子邮件的用户对象,但是当我从我的 ionic 应用程序发出请求时,用户丢失了
我已经花了一天的时间来处理它,任何帮助都会很棒!
编辑 1:
抱歉没有包含代码,这是我的第一次体验
我的登录路径+我的登录功能
app.post('/api/login', login);
function login(req, res, next) {
//console.log(req);
passport.authenticate('local-login', function(err, user, info) {
if (err) {
return next(err); // will generate a 500 error
}
// Generate a JSON response reflecting signup
if (! user) {
return res.send({success : 'false', message : req.flash('loginMessage') });
}
req.login(user, function(err) {
if (err) { return next(err); }
//console.log(req);
return res.send({success : 'true', message : req.flash('loginMessage') });
});
})(req, res, next);
}
问题是,req.login 被执行并且我获得了成功:是的,但是对于 ionic/cordova 应用程序,似乎什么都没有记住
之后,当我尝试检查用户是否使用此登录时
app.get('/api/login/loggedin', function(req, res) {
res.send(req.isAuthenticated() ? req.user : '0');
});
我总是得到'0',我认为这是因为cordova/ionic 应用程序不能使用cookies(请求之间的区别也是离子的cookie 缺少),但我不明白如何管理解决方案既适用于我的网络角度应用程序,也适用于离子版本(仍然使用护照)
【问题讨论】:
-
我们能否看到您的代码很难从图像中判断问题可能是什么,请通过stackoverflow.com/help/mcve
-
编辑了我的答案,提供了更多细节,感谢您的尝试
标签: angularjs passport.js passport-local ionic-v1