【发布时间】:2014-01-06 01:44:09
【问题描述】:
我正在编写一个实时应用程序。基本原理就像聊天,但用户分享 youtube 视频而不是短信。后端还没有完全做完,不知道怎么做。但我对所做的事情有一些疑问。
现在,使用用户/通行证、FB、Twitter 的用户身份验证运行良好,并且凭据存储在我的数据库中。用户登录也可以正常工作。错误消息得到flashed 很好。
我正在使用 mongodb (mongoose) 并在后端表达。它不是基于 API 的设计,因为我不知道如何在 API 中使用用户身份验证(我可以制作 GET/POST/PUT/DELETE API,只是不知道如何在其中进行身份验证)。
例如,当用户使用主页登录时,凭据会在 express.js 路由中使用 req.body.<field> 进行验证。如果通过身份验证,则将用户重定向到仪表板,否则重定向到 signin 并使用 Flash 消息。因此,没有 Ajax 调用,而且现在,该应用程序无论如何都不是实时的。不过我希望它是实时的。
因此,我有 3 个问题:
-
我正在使用模式窗口(引导程序)来要求用户更新配置文件。模态显示很好,除了我想要显示的字段没有显示。密码和电子邮件字段为空,即使我有
value属性。input.form-control.dash(type="password", name="newuserpassword", ng-minlength=8, ng-model="password", value="__USE_EXISTING__") input.form-control.dash(type="email", name="newuseremail", required=true, ng-model="email", value=user.email)http://snappy-app.com/s/read.php?pass=9fc7ffa1e2b2140aad5232d5733f4caf
-
我希望当用户编辑“保存”按钮时,模式中的消息应该是任何错误,或者显示更新成功。事实上,现在,我的更新方法并没有这样做。除了重定向用户,我不知道如何实现我想要的。
exports.update_user = function(req, res) { var user = new User({ 'username' : req.user.username, 'password': req.body.newuserpassword || , 'email': req.body.newuseremail }); console.log(user); user.save(function(err) { if (err) { console.log(err); for (var field in err.errors) { var error = err.errors[field].message; req.flash('error', error); } res.redirect('/dashboard'); } else { req.logIn(user, function (err) { if (!err) { req.flash('success', 'Done!'); } else { req.flash('error', 'Something went wrong.'); } }); } }); } 用户通过单击“保存”更新值后,模式将关闭。用户仍然可以单击“编辑”链接再次更改值,并且模式将打开。现在,根据我所阅读的内容,用户不会看到更改,因为没有页面/模式重新加载。如何确保用户看到更新的值?
感谢任何帮助。
【问题讨论】:
-
有人有意见吗?
标签: javascript node.js authentication express mongoose