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[email protected](name="user_id",referencedColumnName="id"),
              inverseJoinColumns[email protected](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[email protected](name="role_id",referencedColumnName="id"),
        inverseJoinColumns[email protected](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[email protected](name="role_id",referencedColumnName="id"),
        inverseJoinColumns[email protected](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[email protected](name="menu_id",referencedColumnName="id"),
        inverseJoinColumns[email protected](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。反之亦然。

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

时间: 2024-10-09 11:57:27

ssh整合easyui的权限设计的相关文章

ssh整合easyui的权限设计(登录不同账号关联不同的role获取不同的权限)

基于权限基础表建立,权限基础数据操作. 简单叙述下流程: 登录账号:获取当前账号绑定的role,根据role获取此role关联的action,action为菜单的时候怎么做,为按钮的时候怎么做. 此处介绍一种最简单的方法仅供参考. 第一步 登录 流程: 前台: 1.发送账号密码到action(各种验证不再讲述) actiong层 1.根据账号密码进行查询 2.获取role 保存到session 3.获取action 保存到session 4.登录失败提示 public String login(

ssh整合easyui的权限设计(基础数据实现)

基于基础数据库建立完毕,建立对基础数据的操作. 用户的增删改,角色的增删改,action的增删改. 首先介绍用户增删改. 仅仅为测试数据(不要钻牛角尖说没验证,目前主要是实现user表关联role表) (crud操作后面会专门写一篇此处只关心绑定角色) 思路为:点击分配角色获取角色列表,将当前选中的用户id和角色id发送到action层. 简单叙述下前台需要做些什么: 1.获取当前用户id(id为空验证要加上) 2.获取选中角色id(id为空验证要加上) 3.ajax操作 4.操作完以后需要实时

ASP.NET MVC +EasyUI 权限设计(二)环境搭建

请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问common.cnblogs.com这个域名,一直出现"Aborted",非常的郁闷. 页面就是这样子的,不知道为什么,难道是不是我的3个终端有问题吧,还是园子的服务器有问题呢?还是路由器的问题呢?到现在这个问题还没解决,郁闷死了!弄得心情非常的不爽. 好吧,不在说这个问题了,开始我们的正

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这篇博客我们继续来实现我的权限系列,这个博客一段时间也没有写了,重点是我在想还写不写,最终我决定还是写下去,因为我们是为了学习,当别人提出意见的时候,我们可以参考和采纳,但是我们不一定非要采纳,上几篇博客大家都说用CodeFirst来实现,是啊,现在基本很少有人用我的这种方法来实现了,都是用CodeF

ASP.NET MVC +EasyUI 权限设计(一)开篇

在前一段时间中,老魏的确非常的忙碌,Blog基本上没有更新了,非常的抱歉,那么在后面的时间中,老魏会尽量的抽时间来写的,可能时间上就不太富裕了.今天开始呢,老魏会和大家分享一下关于权限设计的有关文章,由于在园子中已经有很多人写过这方面的知识了,所以老魏在这里呢可不能班门弄斧了,只是把自己的理解和做法和大家分享一下,如果有什么不对的地方或者可以优化的地方,老魏非常希望能够得到各位的建议. 话说权限是在任何的项目或者产品中都必须要用的模块,而这部分呢基本上是作为基础数据来提供的,为了能够控制各个用户

ASP.NET网站权限设计实现(三)——套用JQuery EasyUI列表显示数据、分页、查询

一.说明: JQuery EasyUI下载地址:http://jquery-easyui.wikidot.com/download,最新版本1.2.2. 首先预览一下界面: 本例实现的功能: 1.多标签 2.分页列表显示数据 3.获取选中行的标识值,删除选中行 实现以上功能主要使用了: 1.layout:布局 2.tabs:多标签 3.datagrid:表格显示数据,并可以分页 4.messager:消息框 5.window:窗口 要了解用法,下载之后,参阅demo文件夹下的demo和官方文档.

ssh整合常见的后台错误

ssh整合以及常见的后台错误 摘自网络 jsp和Servlet之间传值出现乱码的解决方案 采用设置字符集的方式 request.setCharacterEncoding("utf-8"); 在web.xml文件里定义编码,同时在CoreFilter类里定义编码为utf-8 <filter> <filter-name>encodingFilter</filter-name> <filter-class>fengke.filter.CoreF

XXX系统开发小结(SSH+Jquery EasyUI)

一.项目总体介绍 前一段时间的工作中,笔者大概用了两三个月开发了一个Web管理信息系统,使用的框架集为Struts2.3.1+Spring3.0+Hibernate3+Jquery EasyUI1.3.5,系统业务逻辑并不复杂,完成数据的采集(以问卷的形式).计算处理和形成报告发布.EasyUI是一个很优秀的JS UI框架,使用简单方便,效果也还可以,是UI效果和带宽速度之间的一个折中之选.系统中还有新闻发布模块,用到了富文本编辑器,在比较了很多插件之后,选择了kindeditor,原因很简单,

asp.net mvc +easyui 实现权限管理(二)

一写完后,好久没有继续写了.最近公司又在重新开发权限系统了,但是由于我人微言轻,无法阻止他们设计一个太监版的权限系统.想想确实是官大一级压死人啊, 没办法我只好不参与了 让他们去折腾. 我就大概说一下公司目前在做的权限系统,各位看官给点评价. 设计总体要求: (注:项目名称为 统一权限管理系统) 1.做一个通用权限系统. 2.权限设计按照角色设置. 3.提供统一权限接口 以上就是整体要求,解释一下, 我们的通用是指的以后每开发一套新系统,只需要在统一权限管理系统中进行相应的配置就好了,无需再去开