权限是一个设计起来非常繁琐的功能,尤其是针对前端SPA应用设计时。前后端耦合太强。还提供建议和意见。基本表结构如下user表。user字段描述iduserIDusername用户名示例idusername1赛冷丝原文在我博客的前端路由表中。routes字段描述了id路由自增IDpid父路由ID,默认根路由为0path方便无线分类关键字段的操作,后面会讲到web_pata前端路由路径。注:为了各种SPA的方便,前后没有斜线。前端可以自己处理。nameroutenamedescroutedescriptionsort排序,例如同级路由,可以通过该字段进行排序,排序结果会在前端菜单中显示额外的扩展信息,格式为JSON字符串,如invue-router的meta信息有几项需要注意:添加功能,尽量让前端开发人员填写。当你知道怎么修改的时候,前端肯定知道。当你知道如何删除时,前端必须知道。如果你知道怎么记住的话,这些东西都是跟前端有关的。..示例idpidpathweb_pathnamedescsortextra100,manager内容管理管理内容路由1{}210,1,文章文章管理文章管理1{}320,1,2,list文章列表查看文章列表页面1{}420,1,2,查看文章详情查看文章详情页1{}520,1,2,edit添加/修改文章添加修改文章公共页1{"test":"article-edit"}610,1,心意作文管理作文管理1{}760,1,6,listessaylist查看essaylistpage1{}860,1,6,viewessaydetails查看essaydetailspage1{}960,1,6,editadd/modifyessayaddandmodifyessaypublicpage1{"test":"mind-edit"}注意:给用户选择路由时,如果选择了底层路由,那么从自身到顶层父路由,都要选择。例如,如果您选择文章列表,则文章管理和内容管理都应该被选中。同样,如果选择不在底部,那么应该选择所有的孩子,不再赘述。解释关键字段pid父ID,rootID为0,没什么好说的path默认为“0”,表示当前数据,从最顶层的父pid到自己的pid,用英文“,”来链接,在末尾添加一个逗号。比如文章管理本身的pid是1,其父内容管理的pid是0,那么文章管理的路径就是“0,1”,打个比方就可以了。Extra前端路由扩展信息用户路由关联表。user_routes字段表示id自增IDuser_id用户IDroute_id路由IDextra扩展信息,格式为JSON字符串,比如vue-router中的meta信息,这个扩展会和routes表extra合并,细粒度控制通过这个字段可以实现路由的iduser_idroute_idextra111{}212{}316{}413{}514{}619{"add":true,"update":false}的小操作例子从例子中可以看出该用户拥有的路由实际上是三个页面。它们是:文章列表、文章查看和添加/修改文章。注意:adding/modifyingessays是在extra中设置的,add为true,update为false,表示只添加,不修改,当用户进入这个页面时,前端可以访问当使用这个信息来判断可以做什么,实现了对每个页面具体操作的细粒度控制。最后返回给前端的数据格式如下:{id:1,username:'Salens',routes:[{id:1,web_path:'manager',name:'contentmanagement',extra:{},...Otherfieldschildren:[{id:2,web_path:'文章',name:'文章管理',extra:{},children:[{id:3,web_path:'list',name:'文章列表',extra:{},},{id:4,web_path:'view',name:'文章详情',extra:{},}]},{{id:6,web_path:'mind',name:'论文管理',extra:{},children:[{id:9,web_path:'view',name:'add/modifyessay',extra:{test:'mind-edit',add:true,update:false}}]}}]}]}这是一般的想法。如果我在实现过程中发现不完善的地方,我会继续更新我的博客的最新更新:https://sailengsi.com/article/15
