快速路由:如何将用户带到可选的验证流程并返回?

时间:2016-08-29 15:13:13

标签: node.js redirect express routing query-string

我有一个Node Express网络应用程序,我需要在其上实现此流程:

  
      
  1. /product/:productId/buy :用户提交一份表单,其中包含我提交给API图层的姓名,地址和电话号码

  2.   
  3. API针对201的{​​{1}}以及All good的{​​{1}}

  4. 进行回复   
  5. 202 :如果Order submitted, but we need to verify your mobile number first,请向用户显示确认屏幕

  6.   
  7. /product/:productId/confirm :如果201,请将用户带到手机验证屏幕,其中显示:/verify/phone

  8.   
  9. 202 :用户输入OTP。点击API,验证并将它们带到确认屏幕。否则重装   的 Verify your phone number: <insert phone number entered at step#1> with the OTP sent to your phone

  10.   

我已设置以下路线:

/product/:productId/confirm

当我/verify/phone { method: 'GET', path: '/product/: productId/buy', action: ['productController', 'getBuyForm'] }, { method: 'POST', path: '/product/: productId/buy', action: ['productController', 'postBuyForm'] }, { method: 'GET', path: '/verify/phone', action: ['verificationController', 'getVerificationForm'] }, { method: 'POST', path: '/verify/phone', action: ['verificationController', 'postVerificationForm'] } 时,我在请求正文中提交POSTpostBuyFormphone

服务器以空体和状态代码响应。

现在,如果状态代码为address,我需要导航到name页面,但我还需要以某种方式结转我使用{{{0}}提交的202值1}}因为我需要在页面上显示它。

执行此操作的一个选项是使用:

verify/phone

但我的公司并不希望电话号码成为查询字符串的一部分,因为这会导致滥用。

另一个选择是使用@circusbred下面提到的会话:

phone

但我们尝试不按设计使用会话,我们只对经过身份验证的用户使用会话,此功能也适用于未经过身份验证的用户。

我的问题是:

有没有办法导航或重定向到验证页面,同时传递postBuyForm值而不必将其包含在查询字符串中?

1 个答案:

答案 0 :(得分:1)

唯一可行的选择是使用某种sessions

app.post('/product/: productId/buy', (req, res) => {
  req.session.phone = phone;
});

app.get('/verify/phone', (req, res) => {
  console.log(req.session.phone);
});