jeecg权限模块学习

1. 权限控制

jeecg框架基于SpringMVC框架来做请求的路由控制,SpringMVC用Interceptor类来做过滤链处理,通过配置规则或注解,扫描到url与方法的映射关系。相关内容可查阅SpringMVC相应的资料,本笔记只关注jeecg框架的实现。jeecg进行权限拦截的主要逻辑放在AuthInterceptor.preHandle( )方法进行处理,大致步骤如下:

  • 检查被拦截的Controller是否有自定义的@JAuth 注解对类或方法标明权限类型,如果是忽略权限检查,则返回;
  • isAjax( )通过判断请求头"X-Requested-With"是否存在,如果有则是异步请求;
  • 判断是否api接口,是否excludeUrls、excludeContainUrls
  • 判断是否有菜单权限或者是admin
    • 个人思考:每次都要从数据库查询校验,为减轻数据库压力此处应该用缓存;admin字符串是hardcode了,可以改成配置的方式方便修改)
  • 把控件权限设置到request对象里OPERATIONCODES
  • 把功能对应的数据权限信息设置到request对象,有以下内容:dataRulecodes,数据规则对象集合,数据查询的sql片断
    • 个人思考:由于控件权限、数据权限的设计是依附于菜单,而每个人在某个菜单上权限是不一样的,所以设置在request上,也可以让每次请求能得到最新数据,但同样因为没有缓存,对数据库压力较大;通常对于不是经常变动的权限分配数据,应该是在用户登录后,把当前用户的所有权限数据缓存在session里,而不是每个请求都查一次数据库。)

2. 权限表关系图

JEECG权限管理主要表.jpg

一个权限管理系统一般都有这几张表:用户、角色、部门、资源,以及这几张表的关联关系表。jeecg也是实现了这样一套RBAC的权限管理模型。

从关系图可以看到,用户表用了两张表,主要是考虑用户的属性比较多,账号、密码放在基础表,扩展属性放在扩展属性表。用户与部门是多对多的关系,表示一个用户可以属于多个组织或部门,这样在做权限授权的时候也比较灵活,用户可以切换到不同组织的身份登录,展示的菜单和数据都可能不一样。

对于资源的授权,关系图中显示t_s_function表是与角色和部门权限组相关联的,而并没有与用户表发生直接关联。因此,要给用户授权,得先管理角色或部门权限组的资源权限,然后给用户分配角色或把用户加入到部门权限组去。与t_s_function表关联的还有两张表,分表是操作表和数据规则表。操作表对应的是页面资源上的控件,数据规则表则通过配置数据过滤的字段来控制数据的可见范围,资源表与这两张表是一对多的关系,通过它们,可以把某个资源的权限控制粒度做得更细。

理解好这张关系图后,基本就掌握了jeecg整套权限控制的逻辑,由于jeecg框架是不断从实际业务中总结完善的,这套权限模型基本能满足大部分管理系统的要求,即使有特殊需求,也只是增加一些辅助表即可。我们学习别人的业务框架,主要还是学习解决问题的思路,而不要拘泥于细节。

3. 登录检查逻辑

  • LoginController.checkuser( )方法检查账号密码并获取session
  • 检查验证码
  • 检查用户是否存在
  • 检查密码是否正确
  • 如果一个用户对应多个org,弹窗让用户选择一个org
  • 得到用户org后保存org相关信息到session
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • B. Three AnglesGiven three angles, determine if it is pos...
    与卿__歌阅读 451评论 0 0
  • 天平的原理是什么? 当两边的重量相等,它便不会摆动。 当有东西放上去,而另一边没东西的时候,天平会直接向放有重物的...
    皮卡弟弟阅读 595评论 0 1
  • 睡眠 264小时 日均睡眠8.51小时,精神状态不错。 工作 217小时 觉得工作得到肯定,但也感受到了压力。...
    蓉儿Rong阅读 173评论 0 0