`
F.B.I
  • 浏览: 8307 次
  • 性别: Icon_minigender_1
  • 来自: 基地
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

完全脱离繁琐的acegi,自己设计一套权限控制

阅读更多
贴表结构

用户表
CREATE TABLE `users` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `fast` int(10) NOT NULL DEFAULT '0',
  `loginname` varchar(100) NOT NULL,
  `loginpass` varchar(100) DEFAULT NULL,
  `importuserid` int(255) DEFAULT NULL COMMENT '创建人',
  `importdate` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
)

角色表
CREATE TABLE `role` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `groupname` varchar(100) NOT NULL,
  `fast` int(11) NOT NULL DEFAULT '0',
  `importdate` datetime NOT NULL,
  `importuserid` int(11) NOT NULL ,
  PRIMARY KEY (`id`)
)


角色和用户关联表
CREATE TABLE `roleanduser` (
  `groupid` int(11) NOT NULL,
  `userid` int(11) NOT NULL
)

角色权限关联表
CREATE TABLE `roleandright` (
  `groupid` int(10) NOT NULL,
  `rightid` int(10) NOT NULL
)

权限表
CREATE TABLE `right` (
  `id` int(10) NOT NULL,
  `rightpath` varchar(200) NOT NULL,
  `isShow` int(11) NOT NULL DEFAULT '0' COMMENT '1表示不显示0表示显示',
  `importdate` datetime NOT NULL,
  `importuserid` int(10) NOT NULL,
  `coding` int(11) DEFAULT NULL,
  `isLeaf` int(11) DEFAULT NULL,
  `backinfo` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
  PRIMARY KEY (`id`)
)


个人感觉用spring的acegi还不如按照自己的表结构设计权限,完成脱离acegi的繁琐配置
!!!!!!!!!!!!!如有更好的建议,欢迎大家指正!!!!!!!!!!
分享到:
评论
23 楼 zhxp791008 2009-11-03  
一个系统(web)的权限分为两种:
功能权限,一为能不能看到菜单,二为能不操作具体的功能(url拦截、aop方法拦截),这两样必须同时完成,否则你的权限只是皇帝的新装,骗自己而已。
数据权限,一为行级,更高的为字段级别,方法可以用acl。我自己用的是hibernate的filter,或者你自己可以用sql重写方法完成。

在一个群中有个兄弟用的是aspectj完成aop进行功能权限,acl进行行级数据权限控制,还有就是用aspectj进行字段级别控制。
22 楼 mr.a 2009-11-03  
从此帖看出技术界浮躁 不宽容
21 楼 bluemusic 2009-11-03  
细粒度/粗粒度的资源分配是对权限设计的基本要求。支持脱离acegi,只要对自己项目有帮助,不过自己不怎么会的话老老实实用用别人的轮子也不错。
20 楼 dingdx 2009-11-03  
我认为不管怎么样,楼主能把自己的想法提出来都是比较好的,没有必要这样指责。抛砖引玉嘛,值得肯定。
19 楼 F.B.I 2009-11-03  
berlou 写道
看来我在一楼的回复倒引起一些敌视。
楼主, 不同的solution对应不同的scenario,如果你只是普通的网站后台, 别说acegi, 是不是考虑连Spring那么繁琐的配置也省去算了?
jsp+servlet+url权限控制?

你这几张表, 入门级的工程师应该都见过, 做过, 想过, 实在价值不高。我说的你接受就接受, 不接受就不接受, 无所谓。
还有个回帖认为我装x的那个人, 也无所谓, 因为我知道对牛弹琴是没结果的。

我以为自己很极端,可今天不这么认为了,我发这贴的目的不是秀技术,也没什么技术含量,只是借此来引出大家在实际项目中怎么做的,这个是最简单的网站后台的权限,不要动不动就 对牛弹琴 ,未免你也太那个了吧!
18 楼 berlou 2009-11-03  
看来我在一楼的回复倒引起一些敌视。
楼主, 不同的solution对应不同的scenario,如果你只是普通的网站后台, 别说acegi, 是不是考虑连Spring那么繁琐的配置也省去算了?
jsp+servlet+url权限控制?

你这几张表, 入门级的工程师应该都见过, 做过, 想过, 实在价值不高。我说的你接受就接受, 不接受就不接受, 无所谓。
还有个回帖认为我装x的那个人, 也无所谓, 因为我知道对牛弹琴是没结果的。
17 楼 F.B.I 2009-11-03  
nathanlee 写道
F.B.I 写道
权限表
CREATE TABLE `right` (


一般'权限', 俺们翻译为'privilege'

这个倒没什么,习惯自己就好,怎么定义就怎么弄,哈哈
16 楼 nathanlee 2009-11-03  
F.B.I 写道
权限表
CREATE TABLE `right` (


一般'权限', 俺们翻译为'privilege'
15 楼 hsbljyy 2009-11-03  
我在设计权限系统的时候,一开始也是考虑一大堆东西,包括基于B/S跟基于C/S的。于是光一个操作权限就让我烦躁不已。

后来思量了很多。最后还是决定跟LZ一样,用URL的方式来控制。为什么?URL完全可以满足操作权限的验证。拿web应用来说明吧,不过是JSP或者SERVLET,又或是HTML,在与服务器交互过程中,总得告诉服务器你需要请求的是什么资源吧,那OK,服务器知道了你请求的资源,我就能根据这些资源跟你的权限进行匹配,权限足够,可以访问。至于C/S,说实话,我没开发过。但是有一点我认为是相同的——都要请求服务器的资源。而服务器都是通过不同的类、方法来执行各种不同的操作,而类跟方法在系统中都可以通过一些方法将之映射成不同的URL,大家可以参考struts2.0。当然,还可以遵循约定大于配置的方法来简化一些配置信息。

综上,我认为,URL方式的过滤完全可以满足操作权限级别的系统安全。

至于数据权限,说实话,到目前为止,我仍然没有一个比较好的解决方案。

数据权限的设计范围太广,而且又涉及到业务,很难有一个通用的解决方案。

行级的数据权限可以通过拼装SQL来解决,但是列级的呢?而且,现在几乎都是用ORM来与存储设备交互,这种情况下,如何才能有一套完美的数据权限的解决方案?用规则引擎吗?

希望能有在这方面的达人提供一个比较完整的解决方案。
14 楼 F.B.I 2009-11-03  
linzy410 写道
如何理解了什么是资源,也就理解权限
LZ的想法只是一个简化的权限管理
如果只是这样确实比acegi方便,但是真正做到资源权限管理还是不够的



此兄弟所言极是,这只是一般的不能一般的权限,至于要真正做细粒度,这远远不够的,而且从灵活度来说这也差之甚远。如果一般的 我觉得比acegi方便多了。见笑了
13 楼 F.B.I 2009-11-03  
linliangyi2007 写道
我看到的就是RBAC的核心表,呵呵,不过楼主的标题太大了。

这只是表结构,我用extjs 用了棵树,我认为这是一般的权限, 如果按细粒度来分,至少应该分3层  url权限、数据权限、数据库字段权限
12 楼 linzy410 2009-11-03  
如何理解了什么是资源,也就理解权限
LZ的想法只是一个简化的权限管理
如果只是这样确实比acegi方便,但是真正做到资源权限管理还是不够的
11 楼 linliangyi2007 2009-11-03  
我看到的就是RBAC的核心表,呵呵,不过楼主的标题太大了。
10 楼 redish 2009-11-03  
liubaoshan 写道
acegi的配置确实繁琐,但是经过自己改装后还是可以放到任何一个web系统中应用的,不需要做繁琐的配置

怎么改装呢,有详细的说明吗?我正需要呢。
9 楼 F.B.I 2009-11-03  
chandler 写道
  一个轮子不是几张表,几段代码就可以造出来的。繁琐是为了通用性。


这个只是表结构,里面的代码肯定是通用的 我是结合extjs做的一棵权限树
8 楼 liubaoshan 2009-11-03  
acegi的配置确实繁琐,但是经过自己改装后还是可以放到任何一个web系统中应用的,不需要做繁琐的配置
7 楼 fireflyc 2009-11-02  
.........这个吗?那么好吧,来思考几个问题:
1. 资源是什么?在你的系统中资源是URL吗?如果这样那么这个东西如果脱离web运行能?对于一个安全框架来说支持URL是远远不够的。况且对于一个web系统把URL假设为需要保护的资源我觉得粒度太细了。
2. 用户数据如何来?除了放到数据库中,我可以和LDAP集成吗?或者我需要实现那个接口?
3. 用户认证后的信息放到哪里了?session中?如果是想放到cookie中呢?如果不是web程序呢?
4. 有统一登录的考虑吗?
5. 菜单呢?用户的菜?
6. 界面的权限控制有吗?
………………
随手写着几个。
6 楼 srj2903 2009-11-02  
这个是权限设计吗,不就是几张数据表!!!
5 楼 ChinaHopes 2009-11-02  
chandler 写道
  一个轮子不是几张表,几段代码就可以造出来的。繁琐是为了通用性。


简单就是最好的。




4 楼 ChinaHopes 2009-11-02  
berlou 写道
楼主你洗洗睡吧.
javaeye不推荐发这种新手帖子.

acegi确实繁琐点, 你可以看看别人的轮子和原理, 比如Seam Security.Jboss Drools
你这个连轮子都算不上, 实在太简陋了。


用户管理就是这些

再复杂无非加一些属性,分组功能。

不要学长春一汽

相关推荐

    通用权限管理系统(mysql)

    通用权限管理系统是一套脱离用户系统、脱离栏目(版块、功能)系统的,权限管理体系,使用时可任意搭配现有的用户及其其他相关系统实现无缝整合。 系统采用权限组的概念,用户可属于任意一个组或多个组,组之间的...

    行业分类-设备装置-具有齿轮脱离控制组件的馈纸机构及影像撷取装置.zip

    齿轮脱离控制组件通常包括一套复杂的机械结构,如离合器、制动器和控制系统。离合器使齿轮能够在需要时接合或分离,而制动器则用于在必要时阻止齿轮旋转。控制系统可能由电子传感器、微处理器和执行机构组成,它们...

    一个和应用层完全脱离的进度条控件,界面可组态

    5. **接口设计**:为了实现与应用层的通信,控件提供了一套接口,允许应用程序传递进度信息,控制进度条的行为,如开始、暂停、停止等。 6. **线程安全**:考虑到多线程环境,控件需要处理好同步问题,确保在并发...

    百度离线地图2.0版本,完全脱离外网

    首先,"完全脱离外网"意味着该版本的百度离线地图不再依赖互联网连接。用户可以在任何时间、任何地点,只要设备上有已下载的地图数据,就能查看地图、搜索地点、规划路线,这尤其适合在信号不稳定或者无网络的区域...

    再见极域(脱离老师控制)

    标题“再见极域(脱离老师控制)”暗示了一个软件或技术解决方案,旨在让用户在使用极域教育系统时能够摆脱教师的监管。极域通常是一种教室管理软件,允许教师监控和控制学生的计算机活动,以保持课堂秩序和教学效率...

    基于无线通信的嵌入式机器人控制系统设计

    本文介绍了一套基于无线通信技术的嵌入式机器人控制系统设计,该系统以ARM7处理器为核心,结合无线通信技术,并在系统中移植了嵌入式实时操作系统μC/OS-II,设计出一套智能机器人控制系统。文章内容涵盖硬件设计、...

    OA权限管理设计.doc

    在构建企业信息系统,尤其是办公自动化(OA)系统时,权限管理设计是不可或缺的重要组成部分。权限管理的核心目标是确保系统安全,提升操作效率,并提供灵活的角色分配机制。以下是对OA权限管理设计的详细说明: 1....

    基于PLC控制的自动装脱模机控制系统设计.pdf

    产品从模具中脱离后还需要进行后固化处理,以确保环氧树脂完全硬化并达到预期的物理性能。 8. **质量检验:** 生产出来的环氧浇注件需经过质量检验,包括测试和精修,以确保满足质量要求后才能转入下一个工序,如...

    电传飞机纵向自动驾驶仪控制律设计.pdf

    对于俯仰航迹角自动改平与低高度拉起模式控制律设计,俯仰航迹稳定回路会试图将飞机拉向平飞状态,而当飞机高度低于预定高度时,俯仰控制回路会根据预定航迹角使飞机脱离危险高度。这种设计模式对于自动驾驶仪在飞机...

    最新百度地图API Javascript V2.0 离线版本。 完全脱离百度在线地图, 有比较完善的示例Demo, 默认带有全国8级地图

    通过研究和修改这些示例,开发者可以轻松地将地图功能融入到自己的项目中。 ### 3. 全国8级地图数据 "全国8级地图"表示此离线版本包含了从最高级别(通常是省级)到较低级别的详细地图数据,覆盖了中国所有地区。...

    基于PLC控制系统的矿井瓦斯浓度监控系统设计研究.pdf

    监控系统的设计还需符合规范性原则,瓦斯监控系统设计不能脱离煤矿生产的实际工况条件,要求系统设计框架规范,使用标准的管理接口实现A/D转换,实时将瓦斯浓度数据以曲线形式展示在后台监控显示器上。在互换性原则...

    脱离SVN/CVS版本控制

    清除SVN、CVS版本控制信息,支持此文件后,在鼠标右键将多出Delete CVS/SVN Folders选项。

    关于电脑课脱离老师控制方法.pdf

    计算机课脱离老师控制方法 计算机课脱离老师控制方法是指学生在使用计算机时脱离老师的控制和监管,以获取更大的自由度和独立性。本文将详细介绍如何使用组策略禁用控制面板和防火墙,以达到脱离老师控制的目的。 ...

    百度离线地图完全脱离外网

    标题中的“百度离线地图完全脱离外网”指的是百度地图提供的一种服务,允许用户在无网络连接的情况下使用地图功能。这种技术对户外探险者、旅行者或者在信号不稳定区域的人来说非常实用,它通过提前下载地图数据到...

    发动机冷却水泵智能控制系统设计.pdf

    发动机冷却水泵智能控制系统设计.pdf 摘要:本文设计了一种发动机冷却水泵智能控制系统,旨在解决当前发动机冷却系统中存在的问题,如冷却水泵无法根据实际工况调节循环水量、无法及时发现冷却系统中的故障信息等。...

    第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK,让登录变得So easy!.zip

    JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK,让登录变得So easy! JustAuth 集成了诸如:Github、Gitee、支付宝、新浪微博、微信、Google、Facebook、...

    微机课脱离控制.doc

    "微机课脱离控制" 在计算机课堂中,老师们常常使用控制软件来控制学生使用的电脑,以限制学生的自由度。但是,这种控制方法往往会限制学生的学习和探索欲望。今天,我们将学习如何简单地脱离控制,恢复电脑的自由度...

    PLC在工业锅炉脱离子水处理控制系统中的设计与应用.pdf

    PLC是一种专为工业环境设计的自动化控制设备,能够替代传统的继电器控制系统,实现更高效、可靠的自动化操作。本文将深入探讨PLC的基本原理及其在工业锅炉脱盐水处理系统中的应用。 PLC作为一种基于计算机技术的...

    机房课内摆脱老师控制,反极域课堂管理系统

    在学校上信息技术课是不是总是被老师控制,不能自己干自己的,并且老师会通过极域软件来偷窥或者控制你的电脑。那么如何摆脱老师的监控呢?其实想要摆脱老师的监控非常简单,极域软件是通过内网进行监控的,也就是说...

Global site tag (gtag.js) - Google Analytics