tdesign-vue-next-starter
tdesign-vue-next-starter copied to clipboard
关于权限相关讨论
目前市面上有这么几种较为通用的权限方式,希望各位能投票选出你所认为最好的权限方式,或提出更好的意见。
前端角色权限
实现原理: 在前端固定写死路由的权限,指定路由有哪些权限可以查看。只初始化通用的路由,需要权限才能访问的路由没有被加入路由表内。在登陆后或者其他方式获取用户角色后,通过角色去遍历路由表,获取该角色可以访问的路由表,生成路由表,再通过 添加到路由实例,实现权限的过滤。 缺点: 权限相对不自由,如果后台改动角色,前台也需要跟着改动。适合角色较固定的系统
1. 通过用户角色来过滤菜单(前端方式控制),菜单和路由分开配置
2. 通过用户角色来过滤菜单(前端方式控制),菜单由路由配置自动生成
后端角色权限
实现原理: 是通过接口动态生成路由表,且遵循一定的数据结构返回。前端根据需要处理该数据为可识别的结构,再通过添加到路由实例,实现权限的动态生成。
3. 通过后台来动态生成路由表(后端方式控制)
4. 三种方式集成到项目中由用户自行选择
👋 @timi137137,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。
♥️ 有劳 @pengYYYYY 尽快确认问题。 确认有效后将下一步计划和可能需要的时间回复给 @timi137137 。
4吧,多点选择,毕竟需求不是统一的
3 权限数据理应由后台提供, 前端负责交互和渲染
3 看过好几个开源项目都是由后台提供权限数据, 前端负责交互和渲染
3 权限数据理应由后台提供, 前端负责交互和渲染
3 权限数据理应由后台提供, 前端负责交互和渲染
统计结束,更多人选3,这几天会pr更新
通过后台方式的话, 开发阶段新增路由时,还需要后端配合修改接口? @timi137137
通过后台方式的话, 开发阶段新增路由时,还需要后端配合修改接口? @timi137137
前端后端统一一个格式,后端新增前端就会自动新增
通过后台方式的话, 开发阶段新增路由时,还需要后端配合修改接口? @timi137137
前端后端统一一个格式,后端新增前端就会自动新增
开发阶段,还要后端配合,不太科学, 我觉得antd pro那种在routes的配置对象里中有个access函数属性挺好的
类似下面这样
await 获取后端数据结构() // 建议只返回需要权限的路由,比较简单
const access = (name, 后端数据结构) => true || false // 默认返回true
const routes = [{
// ...
access: access
}]
new Router({routes})
由于 access默认返回true,这样在开发阶段,注释掉access属性就行, 挺方便的
我看了,你们的permission.js
文件里, 已经是这样做了, 跟 vue-elemnet-admin 保持一致也挺好
await userStore.getUserInfo(); // 获取后端数据结构()
const { roles } = userStore;
await permissionStore.initRoutes(roles); // const access = (name, 后端数据结构) => true || false // 默认返回true
if (router.hasRoute(to.name)) {
next(); // new Router({routes})