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

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

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


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


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


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


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

window.location.href='/home'

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


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


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


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


推荐两种方式

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

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

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

【热门文章】
【热门文章】