用户发送表单时如何自动登录/注册?

时间:2019-01-29 06:44:15

标签: javascript node.js express session socket.io

我有一个由Node.JS + Express + Socket.IO运行的网站。我正在使用MongoDB作为数据库。

我有一个页面,在此页面中,当用户单击按钮时,我会向用户打开一个具有注册表单的Bootstrap Modal。用户可以在此模式中选择登录表单。

我在Socket.IO服务器上有3个事件,在Socket.IO客户端上也有3个事件。这些是

Client                       Server
-----------------------------------
|                                 |
|       User Clicks Button        |
|------------------------------->>|
|                                 |
|  Server emits 'register' event  |
|<<-------------------------------|
|                                 |
|     Client catches 'register'   |
|  and opens register/login form  |
|    Fills the form and submits   |
| Client emits 'submit-register'  |
|             Event               |
|------------------------------->>|
|                                 |
|   Server checks the submitted   |
|form data and emits 'registered' |
|  event if user is successfully  |
| registered to database, if not  |
|  emits 'register-error' event   |
|<<-------------------------------|
|                                 |
|  User catches 'register-error'  |
|  or 'registered' events and a   |
| user opens it's session automa- |
|  tically without page refresh   |
|---------------------------------|

我想进行底层沟通。我不想让用户在页面上获得任何刷新,但是如果没有解决此问题的方法,可以刷新它,但是应该打开会话。

我不知道要这样做,谢谢。祝你有美好的一天!

1 个答案:

答案 0 :(得分:0)

我建议您采用passport-local策略。这将允许您通过服务器(节点+ express)设置用户身份验证-身份验证完成(登录或注册)后-将响应发送回客户端。

在您的客户端上,如果您使用的任何JS框架都具有基于Promise的http请求,则可以等待响应-然后根据服务器为客户端提供的响应选择发生的情况。

以下是使用节点,通行证,vue和axios的前后示例: https://blog.jscrambler.com/vue-js-authentication-system-with-node-js-backend