前后端分离时 js 如何优雅的重定向

2016-11-16 10:10:37 +08:00
 honmaple

如题,有这么一个问题,前后端分离,nginx location / index.html,用户访问 xxx.com 时 index.html 里的 javascript 进行判断用户是否登录,未登录则跳转到 login.html

那么问题来了,因为有一个判断是否登录的过程,所以访问首页时在跳转前会先显示出后台的内容,虽然这个过程不到 1s就跳到 login.html,请教这有什么办法不显示后台内容就直接重定向呢?谢谢

3593 次点击
所在节点    JavaScript
13 条回复
learnshare
2016-11-16 10:57:12 +08:00
前后端分离了,还不用 单页应用 的方式?
swirling
2016-11-16 11:08:48 +08:00
你判断登录之后再渲染 index 的内容呗。
ijse
2016-11-16 11:11:54 +08:00
为什么 要用 js 来判断用户是否登陆? 可以 让 nginx 直接判断的。
otakustay
2016-11-16 11:26:23 +08:00
前后端分离也没必要把 html 分出去,一般 html 还是放在后端会比较有好处
liyj144
2016-11-16 12:07:07 +08:00
针对你的场景,推荐加一个 main.html, 在这里负责页面的跳转,登陆就到 index ,否则到 login
youhua
2016-11-16 12:28:37 +08:00
难道最简单的办法不是在 Index 的 head 里面写一小段 JS 判断么
lijsh
2016-11-16 12:30:20 +08:00
项目有没用前端框架? Vue 有 v-cloak 的指令,类似 Angular 中的 ng-cloak ,可以在状态出来前隐藏页面元素。
ctsed
2016-11-16 12:33:16 +08:00
会有安全问题
moxiaonai
2016-11-16 12:36:42 +08:00
判断结果返回成功之前,先隐藏掉,成功之后显示,反之跳转
ansheng
2016-11-16 12:56:27 +08:00
1. 先判断有没有登录
2. 然后再到后台获取数据
stiekel
2016-11-16 13:39:19 +08:00
我这里 Angular ,是在 html 里写一个 loading ,所有资源加载完,再在 Angular 控制器里隐藏掉 loading ,使用 ng-if 控制 ui-router 的 ui-view 。

不过这个事情,其实最好是在后端做,后端根据登场情况,来确定输出的 html 内容。
dremy
2016-11-16 14:49:27 +08:00
既然都前后端分离了,为什么 login 页面还要单独弄一个 login.html 文件呢?路由可以直接去拦截重和定向啊,登录逻辑和业务逻辑都打包到同个 js 文件里去,这样就不会把后台内容显示出来了
slert
2016-11-17 12:28:31 +08:00
有的路由可以手动执行回调函数时才显示页面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/320846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX