一个关于路由匹配的问题,大家来找茬

我有这样一段路由配置:
image

以及这样的路由守卫:
image

现在有这样的问题,我直接进入/signin/sso的时候,进入的页面却是/signin

控制台输出:
image

请问,/signin/sso这条路由已经匹配到了,为什么它还是进了/signin路由?
如果页面已进入/signin,再到/signin/sso,没问题。

我将这两条路由的定义顺序调换一下又可以直接进入/signin/sso路由了。

但是我在下面也写了类似的路由配置,却没有出现这样的问题:
image

请问这是什么问题呢?请各位大神帮忙,谢谢

这种问题基本和你的导航守卫判断条件有关,你的判断条件可以存在问题,你可以试着先不要加这么多条件,简单的走一遍看看

我把条件全部注释了。访问的时候不加路由,它还是直接进/signin

下面是我修改后正常的路由和路由守卫,但是上面的写法,我还是看不出来哪里有问题呀。。。

image

https://router.vuejs.org/zh/guide/essentials/dynamic-matching.html#匹配优先级

开启严格匹配或者调换下两个的先后顺序就可以了

但是根据我前面的控制台输出,明明已经匹配到了/signin/sso,可是还是跳到/signin去了,这是因为优先级的原因?

日志的输出只表明导航守卫被触发,不能说明别的问题。从你的代码上没看出什么明显的问题,你可以加上断点调试一下。

不过 sessionStorage.userInfo 是什么?难道不应该是 sessionStorage.getItem('userInfo')

好吧,到时候打个断点试试能不能找到原因 :sweat_smile:

以前在使用sessionStorage的时候发现,两种赋值的效果相同,为了图方便,就直接那样设置sessionStorage了 :sweat_smile:

谢谢啦。