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

ssh整合easyui的权限设计

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。

理解为用户拥有多个角色,角色拥有多个权限。构成了“用 户-角色-权限”的授权模型。并且他们之间的关系为多对多。

对于用户来说,登陆不同的账号密码,所属的角色不同,可拥有不同的操作。

(写任何代码之前先要构思我们要做什么,做这件事情,需要哪些最基础的东西,他们之间的关系是什么,如何把他们整合在一起。

如果没有想好,代码写下去会造成反复的修改浪费了时间。)

1.首先我们需要3张表  用户表 角色表 action表,用户表角色表为多对多关系,角色表与action表为多对多关系。所以需要2张关系表,

即user_role 和role_action,用的知识为hibernate多对多表关联,下面贴下代码。

首先是T_user类

    private String id;
    private String name;
    private String age;
    private String sex;
    private Set<T_role> role =new HashSet<>();
    private String t_name;   
    private String t_password;   

          @ManyToMany(fetch=FetchType.EAGER)
      @JoinTable(
              name="user_role",
              joinColumns=@JoinColumn(name="user_id",referencedColumnName="id"),
              inverseJoinColumns=@JoinColumn(name="role_id",referencedColumnName="id")
              )
      public Set<T_role> getRole() {
          return role;
      }
      
      public void setRole(Set<T_role> role) {
          this.role = role;
      }
//其他的set get省略

T_role类

        private String id;
    private String name;
    private Set<T_user> user =new HashSet<>();
    private Set<Menu> menu =new HashSet<>();
    public T_role() {
    }    
        @ManyToMany(fetch=FetchType.EAGER)
      @JoinTable(name="user_role",
        joinColumns=@JoinColumn(name="role_id",referencedColumnName="id"),
        inverseJoinColumns=@JoinColumn(name="user_id",referencedColumnName="id"))
            
    public Set<T_user> getUser() {
        return user;
    }

    public void setUser(Set<T_user> user) {
        this.user = user;
    }
    

      @ManyToMany(fetch=FetchType.EAGER)
      @JoinTable(name="role_menu",
        joinColumns=@JoinColumn(name="role_id",referencedColumnName="id"),
        inverseJoinColumns=@JoinColumn(name="menu_id",referencedColumnName="id"))
            
    public Set<Menu> getMenu() {
        return menu;
    }

    public void setMenu(Set<Menu> menu) {
        this.menu = menu;
    }

 

 

Menu类(即action类)

    private String id;
    private String name;
    private String icon;
    private String url;
    private String __parentId;
        private String type;
    private Set<T_role> role =new HashSet<>();


     @ManyToMany(fetch=FetchType.EAGER)
      @JoinTable(name="role_menu",
        joinColumns=@JoinColumn(name="menu_id",referencedColumnName="id"),
        inverseJoinColumns=@JoinColumn(name="role_id",referencedColumnName="id"))
    public Set<T_role> getRole() {
        return role;
    }

    public void setRole(Set<T_role> role) {
        this.role = role;
    }
//其他setget省略

下面是连接表

role_menu

role_menu的外键

简单说明下 menu_id映射了menu表role_id映射了role表

下面是user_role表

user_role的外键

同上不在解释;

只要懂得hibernate的多对多关系,上面的建表会非常简单。

通过以上的5张表,我们可以从用户表获取关联的角色,然后通过角色表获取关联的action。反之亦然。

表建立完成,下面我们进行基础数据实现。

 

转载于:https://www.cnblogs.com/wsy123/p/4462856.html

相关文章:

  • ConcurrentDictionaryTKey, TValue的AddOrUpdate方法
  • 程序开发心理学阅读笔记——第II篇
  • Swift基础
  • Android学习笔记之AlarmManager有关的定时器和闹钟的实现
  • oozie 安装过程总结
  • Ossim中查看网络流量历史数据
  • linux下安装FFmpeg
  • XML处理类
  • Prototype属性
  • Modeless对话框如何响应快捷键
  • C# UDP(Socket)异步传输文件
  • leetcode 155 Min Stack
  • spring冲刺第二天
  • [转]太阳致敬式瑜伽
  • Linux环境Weblogic10g服务部署
  • 【Leetcode】101. 对称二叉树
  • [nginx文档翻译系列] 控制nginx
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • bearychat的java client
  • JS笔记四:作用域、变量(函数)提升
  • Leetcode 27 Remove Element
  • magento 货币换算
  • php中curl和soap方式请求服务超时问题
  • python_bomb----数据类型总结
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • uva 10370 Above Average
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 入手阿里云新服务器的部署NODE
  • 数据结构java版之冒泡排序及优化
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序开发中的那些坑
  • 云大使推广中的常见热门问题
  • 在Unity中实现一个简单的消息管理器
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #includecmath
  • #QT(智能家居界面-界面切换)
  • #QT项目实战(天气预报)
  • %@ page import=%的用法
  • (动态规划)5. 最长回文子串 java解决
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)scrum常见工具列表
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)hibernate缓存
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .form文件_一篇文章学会文件上传
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例