在组件中,我们使用了beforeRouteEnter来发送请求,通过请求的返回来判断是否允许进入页面。
与此同时我们也做了路由拦截,通过router.beforeEach来进行拦截,如果未登录,则弹去登录页。
现在问题是,如果直接在地址栏输入组件对应的url,那么尽管被拦截跳到登录页了,beforeRouteEnter中的请求依然会发出去,这种问题要怎么办?期望的目标是,路由拦截时,beforeRouteEnter中的函数都不执行,请求也不发送。
经过一番实践,发现beforeRouteEnter的触发时机非常的早,比根实例的 beforeCreate还要早,因此我们现在找不到任何一个钩子来拦截。目前唯一想到的方法,是在main.js中去用location.href来拦截,这对于我们来说,不是一个非常优雅的方案。因此希望得到各位同仁的帮助。
PS:我们说的不能拦截不是说,路由不能拦下来,不让它跳转。我们是可以拦下来的,通过很多种方式。但beforeRouteEnter中经常有一些请求,拦下路由,并不能阻止这些请求的发送,因为beforeRouteEnter的触发时机非常地早。
不是有beforeEach 钩子 ?