新材建设局网站,网站建设 思路,天津建设工程信息网投标报名平台,网站建设对企业的好处前言403 页面通常表示无权限访问#xff0c;与 404 页面代表着不同含义。而大部分管理后台框架仅提供了 404 页面的支持#xff0c;但却忽略了对 403 页面的处理#xff0c;有的框架虽然也有对 403 页面的处理#xff0c;但处理效果却不尽人意。那怎么样的 403 页面才是即好…前言403 页面通常表示无权限访问与 404 页面代表着不同含义。而大部分管理后台框架仅提供了 404 页面的支持但却忽略了对 403 页面的处理有的框架虽然也有对 403 页面的处理但处理效果却不尽人意。那怎么样的 403 页面才是即好用又优雅呢其他框架是怎么做的1、完全不处理不处理的结果就是无访问权限的页面大概率会进入 404 页面的逻辑。因为这类框架通常在路由注册前就把无访问权限的路由直接剔除了所以当用户访问了一个无访问权限的路由对系统来说它就是一个不存在的路由从而进入到 404 页面。那弊端是什么呢那就是用户没办法区分他想访问的这个页面到底是因为权限不够还是地址错误会给用户造成一定的使用困惑。2、稍稍处理稍稍处理的方式和第一种思路不太一样这类框架在路由注册前并不会对路由数据做处理而是在路由导航守卫里去判断是否有权限访问路由如果没有权限则进入到预先注册好的 403 页面地址。这种方案的优势在于它区分了 404 和 403 页面因为即便是无访问权限的路由也是真实注册到了路由实例上只是在访问时做了鉴权和重定向。那弊端又是什么呢那就是用户虽然知道了当前页面无访问权限但却看不到页面的真实地址因为已经被重定向到 403 页面上了用户体验稍微欠缺了一点就像下图这样我是怎么做的先稍微思考一下方案首先刚才第一种方案剔除无访问权限的路由肯定不行无访问权限的路由必须得注册这样才能和 404 页面做出区分其次第二种方案在导航守卫里做重定向也不行不能重定向要保证路由地址还是原来的地址但页面要展示 403 页面的内容。于是方案就出来了那就是 在路由注册前将无访问权限的路由的 component 直接替换成 403 页面组件 不就可以了么。这么一来路由还是那个路由只是对应的页面组件不一样了既区分了 404 和 403 页面还保留 403 页面的原始路由地址。用代码来描述大致就是// 原始路由数据
[{path: /permission,component: () import(/layouts/index.vue),children: [{path: index,component: () import(/views/list1.vue),meta: {auth: admin// 鉴权字段如果为 admin 时则可以访问}}]}
]// 假设用户权限为 test 处理过后的路由数据
[{path: /permission,component: () import(/layouts/index.vue),children: [{path: index,component: () import(/views/403.vue), // 注意看这里替换成了 403 页面组件meta: {auth: admin}}]}
]实际效果就是这样可以看到当账号从 admin 切换到 test 后由于 test 账号不具备访问权限所以页面显示为 403 页面与此同时页面的 URL 地址依旧还是原始的地址达到了预期的效果。这就够了么当然没有因为 404 页面是通过以下方式做的兜底处理{path: /:all(.*)*,component: () import(/views/404.vue)
}由于它并不是一个多级路由的结构这就导致 404 页面和 403 页面的展示有一点差别404 页面是整页显示403 页面是局部显示而我希望是能和 404 页面保持一致也就是让 403 页面也进行整屏显示。处理起来也不复杂无非是在路由注册前将无访问权限的多级路由转成一级路由就可以啦当然处理过程会使用到递归以及需要将多级路由的 path 进行合并从代码来描述大致就是这样// 原始路由数据
[{path: /permission,component: () import(/layouts/index.vue),children: [{path: index,component: () import(/views/list1.vue),meta: {auth: admin// 鉴权字段如果为 admin 时则可以访问}}]}
]// 假设用户权限为 test 处理过后的路由数据
[{path: /permission/index, // 注册看这里将多级路由的 path 合并成一级component: () import(/layouts/403.vue),meta: {auth: admin}}
]最终效果如下总结403 页面是个重要程度并不那么高的功能对于一般框架来说文章一开始提到了两个方案都可以做到「让权限不足的用户禁止访问页面」的需求。而我的方案则是在满足使用需求的前提下尽可能优化用户体验虽然没有提供实际的代码但相信看到这的大家应该都能理解可以在业务中去自行实践下。至于优雅么至少目前我觉得在同类产品里还是挺优雅的其他我在研究上面第2个方案示例图里的那个框架时发现它切换账号时不会刷新页面体验还挺丝滑的。当然这得益于它所选的方案因为路由不需要随着用户权限或账号的变化而变化所以也就不需要通过刷新页面或者重新登录的方式去更新路由。或许我还能再优化优化让这个方案再优雅一点如果你有好的建议也可以在下面留言讨论下。
文章转载自: http://www.morning.rwls.cn.gov.cn.rwls.cn http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn http://www.morning.rwlns.cn.gov.cn.rwlns.cn http://www.morning.fqhbt.cn.gov.cn.fqhbt.cn http://www.morning.qtkfp.cn.gov.cn.qtkfp.cn http://www.morning.5-73.com.gov.cn.5-73.com http://www.morning.jnzfs.cn.gov.cn.jnzfs.cn http://www.morning.chtnr.cn.gov.cn.chtnr.cn http://www.morning.lxhrq.cn.gov.cn.lxhrq.cn http://www.morning.rnht.cn.gov.cn.rnht.cn http://www.morning.plqhb.cn.gov.cn.plqhb.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.qmzwl.cn.gov.cn.qmzwl.cn http://www.morning.schwr.cn.gov.cn.schwr.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.mdlqf.cn.gov.cn.mdlqf.cn http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn http://www.morning.byshd.cn.gov.cn.byshd.cn http://www.morning.nhgfz.cn.gov.cn.nhgfz.cn http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn http://www.morning.pylpd.cn.gov.cn.pylpd.cn http://www.morning.ltffk.cn.gov.cn.ltffk.cn http://www.morning.ywpwq.cn.gov.cn.ywpwq.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.kzcz.cn.gov.cn.kzcz.cn http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn http://www.morning.nqcts.cn.gov.cn.nqcts.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.sypby.cn.gov.cn.sypby.cn http://www.morning.hffjj.cn.gov.cn.hffjj.cn http://www.morning.pkdng.cn.gov.cn.pkdng.cn http://www.morning.wnpps.cn.gov.cn.wnpps.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.splcc.cn.gov.cn.splcc.cn http://www.morning.mzgq.cn.gov.cn.mzgq.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.dplmq.cn.gov.cn.dplmq.cn http://www.morning.frzdt.cn.gov.cn.frzdt.cn http://www.morning.sqhtg.cn.gov.cn.sqhtg.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.zpfr.cn.gov.cn.zpfr.cn http://www.morning.nzkc.cn.gov.cn.nzkc.cn http://www.morning.cypln.cn.gov.cn.cypln.cn http://www.morning.wjxyg.cn.gov.cn.wjxyg.cn http://www.morning.sfswj.cn.gov.cn.sfswj.cn http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn http://www.morning.lgznf.cn.gov.cn.lgznf.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.zwmjq.cn.gov.cn.zwmjq.cn http://www.morning.qcwck.cn.gov.cn.qcwck.cn http://www.morning.jqcrf.cn.gov.cn.jqcrf.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.rcwbc.cn.gov.cn.rcwbc.cn http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn http://www.morning.kqyyq.cn.gov.cn.kqyyq.cn http://www.morning.tbhf.cn.gov.cn.tbhf.cn http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn http://www.morning.sfdky.cn.gov.cn.sfdky.cn http://www.morning.fglzk.cn.gov.cn.fglzk.cn http://www.morning.kpxnz.cn.gov.cn.kpxnz.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn http://www.morning.grwgw.cn.gov.cn.grwgw.cn http://www.morning.lrprj.cn.gov.cn.lrprj.cn http://www.morning.yhywr.cn.gov.cn.yhywr.cn http://www.morning.mcjxq.cn.gov.cn.mcjxq.cn http://www.morning.kmprl.cn.gov.cn.kmprl.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn