我有一个由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 |
|---------------------------------|
我想进行底层沟通。我不想让用户在页面上获得任何刷新,但是如果没有解决此问题的方法,可以刷新它,但是应该打开会话。
我不知道要这样做,谢谢。祝你有美好的一天!
答案 0 :(得分:0)
我建议您采用passport-local策略。这将允许您通过服务器(节点+ express)设置用户身份验证-身份验证完成(登录或注册)后-将响应发送回客户端。
在您的客户端上,如果您使用的任何JS框架都具有基于Promise的http请求,则可以等待响应-然后根据服务器为客户端提供的响应选择发生的情况。
以下是使用节点,通行证,vue和axios的前后示例: https://blog.jscrambler.com/vue-js-authentication-system-with-node-js-backend