如题,有这么一个问题,前后端分离,nginx location / 为index.html,用户访问 xxx.com 时 index.html 里的 javascript 进行判断用户是否登录,未登录则跳转到 login.html。
那么问题来了,因为有一个判断是否登录的过程,所以访问首页时在跳转前会先显示出后台的内容,虽然这个过程不到 1s就跳到 login.html,请教这有什么办法不显示后台内容就直接重定向呢?谢谢
1
learnshare 2016-11-16 10:57:12 +08:00
前后端分离了,还不用 单页应用 的方式?
|
2
swirling 2016-11-16 11:08:48 +08:00
你判断登录之后再渲染 index 的内容呗。
|
3
ijse 2016-11-16 11:11:54 +08:00
为什么 要用 js 来判断用户是否登陆? 可以 让 nginx 直接判断的。
|
4
otakustay 2016-11-16 11:26:23 +08:00
前后端分离也没必要把 html 分出去,一般 html 还是放在后端会比较有好处
|
5
liyj144 2016-11-16 12:07:07 +08:00
针对你的场景,推荐加一个 main.html, 在这里负责页面的跳转,登陆就到 index ,否则到 login
|
6
youhua 2016-11-16 12:28:37 +08:00
难道最简单的办法不是在 Index 的 head 里面写一小段 JS 判断么
|
7
lijsh 2016-11-16 12:30:20 +08:00
项目有没用前端框架? Vue 有 v-cloak 的指令,类似 Angular 中的 ng-cloak ,可以在状态出来前隐藏页面元素。
|
8
ctsed 2016-11-16 12:33:16 +08:00 via iPhone
会有安全问题
|
9
moxiaonai 2016-11-16 12:36:42 +08:00
判断结果返回成功之前,先隐藏掉,成功之后显示,反之跳转
|
10
ansheng 2016-11-16 12:56:27 +08:00
1. 先判断有没有登录
2. 然后再到后台获取数据 |
11
stiekel 2016-11-16 13:39:19 +08:00
我这里 Angular ,是在 html 里写一个 loading ,所有资源加载完,再在 Angular 控制器里隐藏掉 loading ,使用 ng-if 控制 ui-router 的 ui-view 。
不过这个事情,其实最好是在后端做,后端根据登场情况,来确定输出的 html 内容。 |
12
dremy 2016-11-16 14:49:27 +08:00 via Android
既然都前后端分离了,为什么 login 页面还要单独弄一个 login.html 文件呢?路由可以直接去拦截重和定向啊,登录逻辑和业务逻辑都打包到同个 js 文件里去,这样就不会把后台内容显示出来了
|
13
slert 2016-11-17 12:28:31 +08:00
有的路由可以手动执行回调函数时才显示页面
|