javascript - 对于用JS驱动的单页面应用,有什么优雅的方式配合后台进行鉴权的跳转?
PHPz
PHPz 2017-04-11 11:52:45
[JavaScript讨论组]

服务端有一个很常见的场景就是访问鉴权,比如匿名用户访问某URL,理想的情况下是服务端会检查用户是否有访问该页面的权限,如果有的话,就会在服务端渲染数据,然后返回给用户,如果没有的话,就会做重定向等操作,将用户重定向到登录页面等。
对于单页面应用(Single Page Application),整个业务逻辑都是用Javascript驱动的,比如AngularJS, 比如ExtJS,那么这种场景,有什么优雅的方式让JS和后端结合来做鉴权? 因为在这种情况下,前端和后端的通信往往都是通过SOAP/JSON/XML等来通信的,重定向是不是在这种场合就用不上了?

PHPz
PHPz

学习是最好的投资!

全部回复(7)
伊谢尔伦

向服务器发送请求,如果判断用户无权限时,可以直接返回一行js代码:

window.location.href='/home'

因为javascript在加载之后就会立即执行,那么这时候无论用户如何操作,除非用js去abort掉ajax请求,否则在后端判断其无权限的时候,返回的报文会让浏览器直接执行这行跳转代码来进行重定向

PHP中文网

可以考虑在单页应用初始化的阶段,发起一个请求,把“鉴权”所需要的数据拉取到本地,并让应用全局都可以访问到。
在进入一些需要鉴权的组件时,在组件生命周期开始时,进行本地化的鉴权,如果不允许访问,就路由/重定向到合法访问的组件里去。
当发生了一些改变权限的操作时,同步把最新的数据拉取回来更新本地数据,保持一致性。

大家讲道理

个人觉得单页应用的业务流程和APP中的是一样的,所以就没有了所谓的重定向。

PHPz

ajax的complete事件监听所有ajax请求,判断返回的状态是不是没有权限。

PHP中文网

状态代号加dialogue 不知道可不可以。

伊谢尔伦

‘’通过ajax返回的状态判断?

高洛峰

在页面路由判断用户是否有权限访问.
在api请求的时候判断用户是否用权限访问.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号