权限设计的问题,来围观

yzk116688 2010-07-26 12:50:46
我在写一个权限的模块,第一次设计,查了相关资料,都是03、04年的帖子,太老了。很多人用springsercurity去控制,我觉得这个东西太庞大了,还是自己去写一套,修改起来也很方便,用filter或者struts拦截器就可以了。
设计一个权限不是那么简单的,有几个想法:
1 用户表、权限表、用户权限表,为每个用户直接分配权限,这样一来会导致中间表太庞大,灵活性太低了。
2 基于角色的,用户表、角色表、用户角色表,为用户分配角色,为角色分配资源,这样设计感觉也不太好。

还有每个用户显示出来的菜单怎么办?


大家有什么更好的设计方案吗,如果有人做好了的话可以不可以开源一下发我一份?复杂点没关系,灵活性高一些,使用的范围广一些,权限是基础模块,每个项目都用的着的东西,开发一次可终生享用……

下面等待大家的高论……
...全文
295 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
hechenhui1983 2010-07-28
  • 打赏
  • 举报
回复
共同学习。。。
dahaidao 2010-07-28
  • 打赏
  • 举报
回复
不是万能的,只能把你的问题一一列出来,然后逐个做解决方案,再综合到一起,把问题解决。
itparadise 2010-07-28
  • 打赏
  • 举报
回复
一个权限可以对应多个访问请求,这里以请求URL为资源单位,只要控制了访问请求的URL,就控制了权限管理;

如果你要让界面因权限不同而不同,有些控件是要动态创建的,比如导航菜单;

有些控件,比如按钮,因为web环境布局的原因,不方便动态创建,就用显示隐藏来控制界面;

有些请求URL,界面上没有触发的控件,比如打开页面自动提交,姑且称为隐式URL;还可以有其他的类型,灵活添加
yzk116688 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 dave_luo 的回复:]
菜单也是需要控制的资源,根据不同的用户,获取对应的菜单列表。
[/Quote]

根据楼上所述,菜单也就是一个权限,因为都是用一个action跳到一个页面,在配置的时候可以弄一个选择是菜单还是动作,这样的话就可以了,我是这样认为的
kuikuichang 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sfateaa 的回复:]
一般权限可以做成:粗粒度 和 细粒度。

粗粒度:就是针对角色进行授权
一个角色拥有多个权限,一个用户可以有一个角色或者多个角色(这种情况应设置优先级)

细粒度:就是直接针对用户进行授权

如果想做的复杂一点的话 可以 粗粒度 细粒度 都做。。
[/Quote]
这样的思想稍微接触了一下
DAVE_LUO 2010-07-27
  • 打赏
  • 举报
回复
菜单也是需要控制的资源,根据不同的用户,获取对应的菜单列表。
  • 打赏
  • 举报
回复
围观。
yzk116688 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 itparadise 的回复:]
权限1:n资源,资源以URL为单位,资源有“动态菜单”,“显示隐藏的控件”,“隐式URL”等类型,资源是树型结构,这样可以控制到每一个请求。然后最终用户拥有哪些权限,就拥有哪些资源,就可以看到哪些控件,就可以访问哪些URL。
[/Quote]


这个有点迷糊了,资源和权限不是一个概念吗?显示隐藏的控件?隐式URL?这个是什么意思?不明白,麻烦解释一下~~
yzk116688 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 hardwood5126 的回复:]
菜单表、角色表、用户表、用户角色表、角色权限表
一个用户可以有多个角色,一个角色可以有多个权限
在用户登录成功的时候将用户的所有权限查出来放入session中,用struts自带的拦截器去拦截所有的请求,然后与session中放入的用户权限作比较,如果有责放行,反之责拦截

可以给用户分配角色,给角色分配权限
[/Quote]

这个是最基本的那个基于角色的权限控制~~
危险的大猫 2010-07-27
  • 打赏
  • 举报
回复
继续围观..
angel21li 2010-07-27
  • 打赏
  • 举报
回复
一个是菜单表,一个是用户表,一个是角色表,在角色表中添加一个字段作为分配相应的菜单权限,用户属于哪个角色就获得相应的权限
itparadise 2010-07-27
  • 打赏
  • 举报
回复
权限1:n资源,资源以URL为单位,资源有“动态菜单”,“显示隐藏的控件”,“隐式URL”等类型,资源是树型结构,这样可以控制到每一个请求。然后最终用户拥有哪些权限,就拥有哪些资源,就可以看到哪些控件,就可以访问哪些URL。
hardwood5126 2010-07-27
  • 打赏
  • 举报
回复
菜单表、角色表、用户表、用户角色表、角色权限表
一个用户可以有多个角色,一个角色可以有多个权限
在用户登录成功的时候将用户的所有权限查出来放入session中,用struts自带的拦截器去拦截所有的请求,然后与session中放入的用户权限作比较,如果有责放行,反之责拦截

可以给用户分配角色,给角色分配权限
百球恩 2010-07-27
  • 打赏
  • 举报
回复
yearnqiao 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yzk116688 的回复:]
引用 11 楼 yearnqiao 的回复:
权限
分为 直接给用户分配权限(资源菜单)
给角色分配
一个用户可以有多个角色

控制到用户是否看到资源菜单
控制到用户是否看到按钮


嗯,这样是可以的,但是这样做灵活性不大~~
[/Quote]


是说有这么几种方法
可以把经常会用到的结合起来

那就是通用的权限了
百球恩 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gumwzg 的回复:]
给角色设置权限,
把用户添加到某个角色下面
[/Quote]

这个好
yzk116688 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wqkjj 的回复:]
引用 4 楼 yzk116688 的回复:

引用 2 楼 wqkjj 的回复:
其实这种问题我觉得完全可以借鉴数据库和OS权限控制的成熟经验,采用角色(用户组)+用户的方式进行控制。
也就是LZ的(1)+(2)比较合理。


1+2 的形式合起来应该是这样吧:用户、角色、用户组、权限,可以为用户分配角色,用户归属某个用户组,也可为用户组分配角色,角色赋予权限,也可用户组赋予权限,也……
[/Quote]


对对,权限可以是菜单也可以使更细的~~~多些指点~
wqkjj 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yzk116688 的回复:]

引用 2 楼 wqkjj 的回复:
其实这种问题我觉得完全可以借鉴数据库和OS权限控制的成熟经验,采用角色(用户组)+用户的方式进行控制。
也就是LZ的(1)+(2)比较合理。


1+2 的形式合起来应该是这样吧:用户、角色、用户组、权限,可以为用户分配角色,用户归属某个用户组,也可为用户组分配角色,角色赋予权限,也可用户组赋予权限,也可用户直接分配权限……这样感觉灵活性比较大~~~……
[/Quote]

权限表指向一个受控对象。受控对象可以是一个命令执行、菜单操作、按钮操作、表单数据的显示。。。。LZ想要多细就多细。

权限还可以设计为授权允许(即必须存在权限才能执行,用于严格权限控制的功能)、授权禁止(即存在权限记录的不运行执行,适应于权限只对某些特定人员不能执行的情形,可以节省权限配置数据量)。。。。
yzk116688 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sfateaa 的回复:]
一般权限可以做成:粗粒度 和 细粒度。

粗粒度:就是针对角色进行授权
一个角色拥有多个权限,一个用户可以有一个角色或者多个角色(这种情况应设置优先级)

细粒度:就是直接针对用户进行授权

如果想做的复杂一点的话 可以 粗粒度 细粒度 都做。。
[/Quote]

很有道理~~
sfateaa 2010-07-26
  • 打赏
  • 举报
回复
一般权限可以做成:粗粒度 和 细粒度。

粗粒度:就是针对角色进行授权
一个角色拥有多个权限,一个用户可以有一个角色或者多个角色(这种情况应设置优先级)

细粒度:就是直接针对用户进行授权

如果想做的复杂一点的话 可以 粗粒度 细粒度 都做。。
加载更多回复(13)
这是记事狗微博系统最新官方版,记事狗微博系统,是一套创新的PHP开源微博程序,兼有BBS和轻博系统特性,支持短信、手机客户端,可与新浪微博平台内容互通,既可用来独立建站也可通过Ucenter与已有网站整合,通过微博评论模块、关注转发机制打通全站的信息流、关系流,是新时代网站运营不可或缺的系统。整个V3.5版本从数据库结构、代码规范完善、系统负载性能、后台安全管理、信息导航架构、注册认证体系、内容审核管理、用户关系挖掘、多客户端接入、应用功能扩展等十多个方面做了全面改进提高! 更新说明: 记事狗V4.5.0 beta 版本更新 +--------------------------------------+ 全新的UI风格 全新的导航设计 积分商城功能 内容推送功能(重要动态) 频道模块升级 发布框全新设计,支持带标题微博 微博支持匿名发布 新增加微博相册功能 修复程序安全问题(感谢 datuz@360 、 Chora@乌云 的反馈) 记事狗微博 V4.0.5 Build20130521 1、支持海量数据,可自由分布式架构和关键表分表; 2、全新云验证码,不用再担心注册机的骚扰,还可赚广告费; 3、用户登陆优化,不用再费力猜测输入的昵称是不是自己的; 4、注册过程完善,轻松解决注册后不能快速融入社区的困扰; 5、创新频道模块,即拥有论坛版块优势,又可规避列币驱逐良币的难题; 6、全新顶赞机制,不仅有效激励用户,更让精彩内容不再错过; 7、图片附件任意扩展,不仅支持FTP服务器负载均衡,更支持阿里云存储; 8、用户资料更丰富,启用哪些用户属性、在哪里显示管理员说了算; 9、图文混排更精彩,是微博也是轻博,满足不同用户的需要; 10、在线图片搜索添加,网上海量的图片随便选,让网站更引人入胜; 11、文字样式更多彩,是粗体还是彩色、是代码和引用都可以; 12、私信支持表情图片,好友私聊也精彩; 13、有了马甲更好运营,可用多个账户围观讨论,让新人感受网站的魅力; 14、邮件提醒抓回用户,即可即时消息提醒、也可以定期top内容通知; 15、创新左侧导航,即有两栏的大气、又有三栏的明了,随意开启关闭; 16、附件功能更完善,上传下载都有积分,还可指定用户组不受积分限制等; 17、全新模板界面,简约、大气、素雅,重点内容更突出; 18、精彩内容轻松推荐,可推荐到话题、微群、频道并直接标记展示; 19、重要内容全站置顶,还可以通知到手机客户端,全站用户都不会错过; 20、评论详情更精彩,不仅可直接查看精彩评论,更支持类网易新闻的盖楼评论; 21、有奖转发激活网站,没事做个转发抽奖活动让全站用户动起来; 22、图片投票更有趣,文不如表、表不如图啊; 23、系统定制更方便,是微博还是微贴、是顶还是赞,后台一键设置; 24、广告管理更强大,用链接、文字还是图片,想单独设置还是批量管理均可 25、自由游客首页设置,选新浪还是腾讯模式、用图片墙还是频道看你的心情; 26、任意控制用户访问,可单独设置任何用户组、用户和IP的访问权限; 27、全新android客户端V2.0,支持频道、赞、置顶内容推送等; 28、后台URL链接地址管理及黑名名单功能,方便站长管理和控制微博中的URL网址; 记事狗V4,不只是微博! 记事狗,为轻运营而生!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧