在使用 hash 模式路由的单页面应用实现登录跳转

问题描述

SPA 在项目架构上通常需要一个用户系统,当用户使用这个应用时,会涉及到登录这个动作。

如果 SPA 应用无法做服务端渲染,那么在实现其路由模块时,使用 hash 模式会是一个常见的选择。

使用 hash 模式有一个问题是:服务端是无法获取 # 后面的内容的。这种特性会导致:当用户首次进入的是 host#/me/edit 之类的页面时,如果是服务端做登录的重定向跳转,会导致 #/me/edit 丢失,从而用户登录成功后,访问的页面的 url 是 host


解决方案

重定向到登录页面这件事情交给前端来负责。在跳转登录页之前,将 location.href 进行 base64 编码,将转码后内容传给后端,用于后端登录成功后重定向到用户最开始访问的页面。

志遥 wechat
微信扫一扫,我在丁香园记公众号等你