当前位置: 首页 > news >正文

中小企业网站制作哪家好申请网站做自己的产品

中小企业网站制作哪家好,申请网站做自己的产品,用ssh做网站,专业购物网站定制目录 数据隔离/权限控制 用户/权限/部门/岗位 ​数据隔离 mybatis的maaper写法 注解和切面 前端路由拦截 已知若依单体的前端采用vue-element-admin#xff0c;在前端的专栏系列vue-element-admin的动态路由已详细拆解#xff0c;其最大特点是使用后端返回数据控制前端…目录 数据隔离/权限控制 用户/权限/部门/岗位 ​数据隔离 mybatis的maaper写法 注解和切面 前端路由拦截 已知若依单体的前端采用vue-element-admin在前端的专栏系列vue-element-admin的动态路由已详细拆解其最大特点是使用后端返回数据控制前端菜单每次接口请求前会有路由拦截来获取权限和菜单列表并重新渲染页面配合若依后端自己实现的数据权限切面能够实现很好地的数据隔离和权限隔离那么现在就从代码层面分析其实现 数据隔离/权限控制 若依系统的权限控制实体分为目录--菜单--按钮最小到按钮级别也就是针对某个表可以控制其是否能够删除或新增普通用户只能查看筛选查 目录左侧菜单栏菜单耳机菜单按钮数据的增删改查操作 用户/权限/部门/岗位 权限控制主体是用户用户具有角色、部门、岗位的细分属性 角色角色可以控制菜单角色意味着该用户具备哪些数据的管理操作权限可以在角色编辑栏针对角色来控制不同的菜单项部门部门不涉及权限但涉及组织架构当树形展开部门组织架构后可以清晰明了地知道用户隶属于什么部门及其岗位是啥只是用户的某个属性岗位岗位也只是用户的某个属性岗位与角色关联比如测试组的负责人应该可以查看所有测试表的数据那么可以给这个负责人用户1个test-admin角色给其测试表的所有操作权限同理研发和营销人员都应该有1个对应的admin角色通过角色控制对应部门的菜单列表 刚才说可以通过定义角色权限来控制目录菜单实现不同的部门看不同的菜单栏那么如果同一个部门内部比如营销人员A和营销人员BA是小组长可以新增任务B只能查看和认领/修改那么这就涉及同一个表的按钮级别权限可以新建一个营销的comon角色该角色只能查看按钮 数据隔离 上面从功能层面描述了权限管理体系也就是实现从前端去控制用户的操作权限那么后端的数据如何做到数据隔离呢数据隔离就是不同部门看隶属于其部门的数据部门A和部门B的common普通用户都有查看施工监测这个目录---菜单的权限并且均有查看权限那么其查看的数据应该是跟部门绑定的这就是通过后端切面来实现的 mybatis的maaper写法 我们来看代码生成器生成的mapper怎么写的sql的where循环条件最后一行有params.dataScope的这个字符串它是入参ProjectJklc这个pojo类的某个属性这里可以把他当作1个占位符 select idselectProjectJklcList parameterTypeProjectJklc resultMapProjectJklcResultinclude refidselectProjectJklcVo/where if testgdxc ! null and gdxc #{gdxc}/ifif testzbsl ! null and zbsl #{zbsl}/ifif testgjxc ! null and gjxc #{gjxc}/ifif testscyl ! null and scyl #{scyl}/ifif testcjyl ! null and cjyl #{cjyl}/ifif testgjnl ! null and gjnl #{gjnl}/ifif testtnl ! null and tnl #{tnl}/ifif testmgzl ! null and mgzl #{mgzl}/ifif testwynbwy ! null and wynbwy #{wynbwy}/ifif testxgjy ! null and xgjy ! and xgjy #{xgjy}/if${params.dataScope}/where/select 在 ProjectJklc这个实体定义中继承了BaseEntity它有params属性是个map默认是空 public class ProjectJklc extends BaseEntity private MapString, Object params; params在何时被填充的这个sql何时被补充完整的可以查看使用这个mapper的impl调用入口有个注解DataScope(deptAlias project_jklc)这个注解中定义了deptAlias这个key翻译过来是部门表别名意味着这个value是个跨部门访问的表 /*** 查询监控量测列表* * param projectJklc 监控量测* return 监控量测*/OverrideDataScope(deptAlias project_jklc)public ListProjectJklc selectProjectJklcList(ProjectJklc projectJklc){return projectJklcMapper.selectProjectJklcList(projectJklc);} 注解和切面 DataScope注解定义有3个属性部门表别名用户表别名权限字符实现跨部门跨用户的数据隔离过滤条件 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface DataScope {/*** 部门表的别名*/public String deptAlias() default ;/*** 用户表的别名*/public String userAlias() default ;/*** 权限字符用于多个角色匹配符合要求的权限默认根据权限注解ss获取多个权限用逗号分隔开来*/public String permission() default ; } 在DataScopeAspect切面中有一系列判断其核心是首先看当前用户所属权限是否限制了本人操作过的数据只有本人能看或部门内都可以使用比如当前用户所属角色营销人员B的营销common角色若是仅仅本人数据权限就只能查user_id等于她自己的 判断中角色如果是全部数据权限/all权限不拼接sql正常情况是本部门可以访问也就是只做部门间的数据隔离那么就只拼接dept_id的SQL语句如下 if (DATA_SCOPE_ALL.equals(dataScope)){sqlString new StringBuilder();conditions.add(dataScope);break;}else if (DATA_SCOPE_DEPT.equals(dataScope)){sqlString.append(StringUtils.format( OR {}.dept_id {} , deptAlias, user.getDeptId()));} 该切面在方法调用前填充了实体中的params属性在mybaits的mapper使用时候这个实体已经有值了这样就实现了部门/用户层面的数据隔离。 前端路由拦截 那么代码生成器生成的前端代码如何配合后端来完成按钮级别的控制的呢这个就涉及到前端代码入侵在前端el-button按钮组件上有个v-hasPermi属性 el-col :span1.5el-buttontypedangerplainiconel-icon-deletesizemini:disabledmultipleclickhandleDeletev-hasPermi[system:jklc:remove]删除/el-button/el-col v-hasPermi是自定义指令用于处理操作权限。它通过获取store中的permissions来判断用户是否有操作权限如果没有则移除该元素[system:jklc:query]将被解析成system,jklc,query然后比对permission获取的后端权限list如果没有比对上就是fasle就不会选自然这个el-button组件。 import store from /storeexport default {inserted(el, binding, vnode) {const { value } bindingconst all_permission *:*:*;const permissions store.getters store.getters.permissionsif (value value instanceof Array value.length 0) {const permissionFlag valueconst hasPermissions permissions.some(permission {return all_permission permission || permissionFlag.includes(permission)})if (!hasPermissions) {el.parentNode el.parentNode.removeChild(el)}} else {throw new Error(请设置操作权限标签值)}} }
http://wiki.neutronadmin.com/news/213179/

相关文章:

  • 空间站 参考消息国内做网站上市公司
  • 上海高端网站lsp专用浏览器
  • 网站建设项目表宝坻建设路小学网站
  • 清远专业网站制作公司建设微网站项目报告
  • 黄页网站推广app哈尔滨市建设工程信息网官网
  • 建设网站的好处静态化网站和app的区别
  • 网站建设尚品宁夏信用建设官方网站
  • 网站建设作业素材平面设计素材包
  • 检查网站的跳转路径是否清晰 哪里要优化品牌建设培训心得体会
  • 潍坊网站排名公司北京华夏网站建设设计公司
  • wordpress子目录站点网站管理入口
  • 做网站所用的工具.net网站开发实验报告
  • 长沙网站 建设推广世云网络备案新增网站备案
  • 网站建设与管理习题一辽宁建设工程信息网招标软件
  • 什么网站收录排名最高外链博客网站
  • 青岛红岛做网站电商平台的搭建
  • 安徽建站系统深圳网站建设公司服务怎么做
  • 百度怎么自己做网站购物商城设计
  • 摄影网站规划设计书长丰县建设局网站
  • 旅游微网站建设做网站的公司还市场吗
  • 如何自建网站卖产品网页是由什么语言编程的
  • 深圳家居网站建设公司wordpress修改页尾
  • 找印度人做网站做的好的响应式网站
  • 唐山网站建设服务什么是工业互联网
  • 如何为公司建立网站企业所得税的计算公式
  • 韩国的汽车设计网站wordpress无法点上传图片
  • 阳春县建设局网站wordpress首页仅导航怎么设置
  • 建立网站 用英语1万一个月扣多少个税
  • 怀化网站网站建设海南在线新闻中心
  • wordpress免费建站吗wordpress教程之