遇到一个问题,因我做了小程序分包,导致本来想允许访客访问的页面,却总是被强制跳转到登录页面。
深层原因是设置的链接地址和common/appInit.js中373行附近的判断机制有问题导致。
本来是判断如果当前链接位于uni-starter.config.js中的visitor白名单时,不进行强制跳转到登录页,但实际情况是无效,原因是,visitor中配置的链接地址,如: pagesB/about/about,在appInit.js中,该页面实际链接是: …/…/pagesB/about/about,两者肯定是不一样的,必然被认为是不在白名单。
解决办法简单,在uni-starter.config.js中visitor的白名单,添加时这样添加:
"visitor" : [
"/",//注意入口页必须直接写 "/"
{"pattern":/^\/pages\/list.*/}, //支持正则表达式
{"pattern":/^\/pagesA\/login-page.*/},
"/pages/common/webview/webview",
"/pages/grid/grid",
"/pages/ucenter/ucenter",
"/pages/ucenter/guestbook/guestbook",
"/pagesA/about/about",
"/pagesA/settings/settings",
"../../pagesB/create/create",
"../../pagesB/create/create"
],
这里面有的加有的不加…/…/,是和你链接跳转的地址来源有关,如果无法判断,可以去common/appInit.js中375行附近,打印一下url和item,就看到两者为何被判断为不一致了,按实际情况修改即可