问题描述
SPA 在项目架构上通常需要一个用户系统,当用户使用这个应用时,会涉及到登录这个动作。
如果 SPA 应用无法做服务端渲染,那么在实现其路由模块时,使用 hash 模式会是一个常见的选择。
使用 hash 模式有一个问题是:服务端是无法获取 #
后面的内容的。这种特性会导致:当用户首次进入的是 host#/me/edit
之类的页面时,如果是服务端做登录的重定向跳转,会导致 #/me/edit
丢失,从而用户登录成功后,访问的页面的 url 是 host
。
解决方案
重定向到登录页面这件事情交给前端来负责。在跳转登录页之前,将 location.href
进行 base64 编码,将转码后内容传给后端,用于后端登录成功后重定向到用户最开始访问的页面。