对于用JS驱动的单页面应用,有什么优雅的方式配合后台进行鉴权的跳转?

发布于 2022-09-03 09:13:39 字数 290 浏览 13 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

吖咩 2022-09-10 09:13:39

推荐两种方式

  1. 在ajax函数上再做一次外包装,对服务器返回的错误状态和错误信息做统一处理,并提示错误信息给用户,如果是因为需要登录授权,则js控制跳转到登录页面,并带上当前页面的url用于登录后回跳,如果没有错误才最终执行业务逻辑。

  2. 如果使用jquery,则可配置全局的ajaxSuccess事件,然后逻辑同方式一,做错误信息处理和登录跳转处理。本人没用过该方式,想了解的自行百度。

另外我也是新入门的spa开发者,欢迎一起分享经验:
http://segmentfault.com/q/101...

⒈起吃苦の倖褔 2022-09-10 09:13:39

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

window.location.href='/home'

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

羁绊已千年 2022-09-10 09:13:39

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

饮湿 2022-09-10 09:13:39

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

永不分离 2022-09-10 09:13:39

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

夜唯美灬不弃 2022-09-10 09:13:39

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

深者入戏 2022-09-10 09:13:39

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

南街九尾狐 2022-09-10 09:13:39

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文