验证后,Passport.js + Express.js将用户转发到原始目的地

pro*_*ype 10 authentication node.js express passport.js

我有一个应用程序是服务器上的Node + Express + Passport和客户端上的jQuery + Backbone.js.客户端在URL中使用哈希标记,但是对于某些功能,用户登录是很重要的.

我希望可以通过URL访问该应用,例如http://mydomain.com/app#cone/waffle/flavor/mint/toppings/sprinkles:

  • 如果用户已经登录,他们会直接转到请求的URL而不会有麻烦
  • 如果用户尚未登录,/login则会转到然后转到请求的URL

继这篇SO帖子,关于Node.js Passport的Google策略的自定义returnUrl之后 ,我就这样了

  • 如果他们已经登录,他们会直接使用URL,哈希标签等
  • 如果他们没有被记录,则会将他们带到登录页面,然后到达请求的网址,但是......

它似乎在登录后从重定向上的原始URL中删除哈希参数.

有什么方法可以在将哈希参数重定向到原始目标时保留哈希参数吗?

从这篇文章中,从请求URL获取哈希参数我得到了哈希标签在服务器上不可用的想法,这是使用哈希标签的全部要点.

所以我怀疑这是不可能的.也许以某种方式在本地缓存params并在重定向上检索它们,对[original URL minus hastags] + #use-cached-params吗?

hun*_*tis 9

散列参数仅限浏览器,不会转到服务器.您可以使用此技术重定向返回,哈希标记和所有:

  • GET/some/page #with/hash
  • 登录?然后渲染页面
  • 未登录?渲染一个有一些JavaScript的页面,比如'getHash.jade'
  • getHash.jade:复制完整的URL,然后重定向到'/ login&redirect ='+ originalURL
  • GET/login(现在你可以在服务器上保存哈希并从那里获取)