`
andy54321
  • 浏览: 441517 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于权限模块设计的一点思考

阅读更多
现在在进行系统的权限模块的开发,
已经建立了 user - role - permission 的关联规则,可以实现到url的控制;
问题产生,这样就要依赖url,而且可能会出现同一个url处理类中会包含处理多个业务的方法,这样就不能实现严格控制了,而且可能产生混乱,这是问题一;
问题二,如果我想权限控制粒度再细一点,比如能够控制到每个页面的每个按钮(操作),这样又该符合设计呢?

权限的控制问题应该在大部分的web程序中都会使用到的吧,
还请诸位不吝指点几句
分享到:
评论
13 楼 marsjin 2008-10-29  
权限的分配一般是:
user:具体的用户
role:权限角色
menu:功能菜单

一般给role分配menu

给user分配role

如果user分配了某个role,哪么他就具有role所分配的menu权限

一个role可以分配多个menu
一个user可以分配多个role,哪么他具有更多个role的menu权限

12 楼 tedeyang 2008-10-29  
接着回答楼主的两个问题
1,一个url中有多个处理内容要分别设计权限,你可以用Spring Security利用AOP完成的方法拦截,配合异常过滤器,就可以很漂亮地用一个提示页面来告诉用户"老兄,你捞过界了"

2,页面中按钮控制
方案一:让这个按钮按权限决定是否显示,这个可以使用Spring Security的JspTag,或者你自己开发其他模板语言的宏(我就需要开发velocity宏,谁让因为官方不提供来着)
方案二:在这个按钮执行后从服务端进行AOP拦截.也就是1中提到的

其实我自己的应用中还有苦恼事,就是想让url能被用户自定义,于是必须用数据库来存储url和role的对应关系,恩,还要接着看是否能扩展SS2.应该是很容易的,因为我大概知道Spring是如何解析http配置的,呵呵.
11 楼 tedeyang 2008-10-29  
andy54321 写道
jander 写道
看看spring security, 它都给你解决了。
虽然有点繁琐。

不是有点繁琐,是非常繁琐,感觉太庞大了;
其实在解决方法上,我在进行spring security / jsecurity 之间的抉择,
前者过于庞大繁琐,后者刚刚加入apache,好多东西都没完善呢,当前文档、demo相当缺乏;

如果说Acegi庞大繁琐那是实话,说Spring  Security 2.0繁琐那我不能苟同.
以我的经验,Security 2.0已经非常简洁了.接口设计优雅,,默认值合理,用来开发其实非常快.
我们以前是用过滤器做的URL权限控制,最近我改成了Spring Security实现,
写了十几行配置,再实现一个接口,再看看它的几个jsptag,登录和权限就都集成了,也不需要修改原来数据库结构.即便以后把用户信息改成LDAP实现,或者增加方法级别的安全设置,看手册那也是很easy的.

推荐看<<Spring in action>>第二版,在网上有公开章节的,其中含有Spring Security的相关内容,可能是地球上写得最好的教材了.(我本来照着官方网页的step by step入手的,弄了一天也没明白,嘿嘿.)
从这本书着手看,半天就能看懂,一天就能架起来.

我写过的URL控制性质的权限系统和Spring Security 2的架构设计比起来就像玩具一样,太粗糙了.看了人家的设计和代码,很被折服了一把.
唉...
10 楼 andy54321 2008-10-29  
Joo 写道
我们现在的做法是采用scope+type字段来判断一种Permission,其中scope代表URL,type可能为url也可能为action.这样同时也定义了权限的划分,方便权限分配时候的操作.其实更好的方法是将所有的permission都作为Action处理,这个等有时间在慢慢细说

期待你详细的解说
9 楼 andy54321 2008-10-29  
Fly_m 写道
将权限细分到对操作(method),资源上的控制,用单独的interceptor来处理。

多谢,可否说得细一点呢
8 楼 andy54321 2008-10-29  
jander 写道
看看spring security, 它都给你解决了。
虽然有点繁琐。

不是有点繁琐,是非常繁琐,感觉太庞大了;
其实在解决方法上,我在进行spring security / jsecurity 之间的抉择,
前者过于庞大繁琐,后者刚刚加入apache,好多东西都没完善呢,当前文档、demo相当缺乏;
7 楼 andy54321 2008-10-29  
ronghao 写道
问题2可以参考这里:
http://blog.csdn.net/snow_fox_yaya/archive/2007/07/29/1715869.aspx
基于webwork和过滤器实现无代码侵入的原子级界面权限

多谢,看了这个,
明白了一些东东。。。
6 楼 andy54321 2008-10-29  
shiren1118 写道
url怎么就控制不了呢?DispatchACtion或multiController怎么不成呢?

能具体说一下是怎样实现的么
5 楼 Joo 2008-10-29  
如果没有使用第三方的MVC框架,则可以让每一个Action方法实现一个action或者validable的接口,实现接口中一个isPermission()的方法,然后再其中实现你的权限验证.如果controller不是简单的pojo,那只能考虑采用AOP将验证方法插到action方法代码之前进行验证了.
我们现在的做法是采用scope+type字段来判断一种Permission,其中scope代表URL,type可能为url也可能为action.这样同时也定义了权限的划分,方便权限分配时候的操作.其实更好的方法是将所有的permission都作为Action处理,这个等有时间在慢慢细说
4 楼 Fly_m 2008-10-28  
将权限细分到对操作(method),资源上的控制,用单独的interceptor来处理。
3 楼 jander 2008-10-28  
看看spring security, 它都给你解决了。
虽然有点繁琐。
2 楼 ronghao 2008-10-28  
问题2可以参考这里:
http://blog.csdn.net/snow_fox_yaya/archive/2007/07/29/1715869.aspx
基于webwork和过滤器实现无代码侵入的原子级界面权限
1 楼 shiren1118 2008-10-28  
url怎么就控制不了呢?DispatchACtion或multiController怎么不成呢?

相关推荐

    QT文件云服务系统的权限管理模块设计

    QT文件云服务系统的权限管理模块设计是构建安全、高效、可扩展的云存储平台的关键组成部分。这个模块的主要目标是确保用户只能访问他们被授权的文件和目录,同时提供灵活的权限控制策略,以满足不同组织和用户的需求...

    毕业设计论文-教务管理平台权限及公共模块设计与开发.zip

    在本文中,我们将深入探讨一个毕业设计项目——“教务管理平台权限及公共模块设计与开发”。该设计旨在创建一个集成了权限控制和通用功能的教务管理系统,以满足学校管理者、教师和学生的需求。 首先,权限管理是...

    基于QT的地下水位监测系统权限管理模块设计

    基于QT的地下水位监测系统权限管理模块设计旨在提供一套高效、灵活且安全的用户访问控制机制,以满足不同角色用户的需求。 首先,权限管理模块的基础是用户账户体系。在系统中,每个用户都需要一个唯一的身份标识,...

    系统功能模块设计文档

    系统功能模块设计是软件开发过程中的关键环节,它定义了软件系统的核心操作和流程,确保系统能够满足用户需求并高效运行。在这个文档中,我们将深入探讨系统功能模块的设计原理、步骤以及常见模块类型。 首先,我们...

    学生信息管理系统 教师权限模块 学生权限模块

    教师权限模块 学生权限模块 学生权限模块含有: 1 .增加 2 .显示 3.追加 4.查找 学生信息功能 教师权限模块含有: 1.增加 2.显示 3.追加 4.查找 5 .修改 6.删除 学生信息功能 用到的主要知识: ( 1 )类 ( 2 ...

    用户权限管理模块(C++实现)

    本项目"用户权限管理模块(C++实现)"是一个用C++编程语言实现的权限管理解决方案,它包含了几个核心功能,如单例模式、用户区分、用户管理以及密码安全存储。 首先,我们来深入理解C++实现的用户权限管理模块。C++...

    java模块级通用权限

    总之,"java模块级通用权限"是一个涉及多个层次和组件的复杂设计,需要综合运用数据库设计、面向对象编程、权限模型和安全策略等知识。通过合理的设计和实现,可以为Java应用程序构建出一个强大而可靠的权限管理系统...

    ODOO8按钮权限设置模块

    ODOO8按钮权限设置模块是针对Odoo 8版本的一个扩展功能,它的主要目标是优化 Odoo 中对用户按钮操作的权限控制。在标准的 Odoo 系统中,为不同用户组设置按钮权限通常需要深入到源代码层面,这不仅耗时,而且对非...

    C# winform 权限控制 包括角色 用户 权限设置

    在C# WinForm应用开发中,权限控制是一个关键的安全组件,它确保了只有授权的用户才能访问特定的功能或数据。本教程将详细讲解如何在C#...在实际项目中,应根据具体需求设计和实现权限控制,确保系统的安全性和稳定性。

    权限设计(包括表结构)

    权限设计的主要组件包括权限管理模块、角色管理模块、用户管理模块和权限分配模块。权限管理模块负责管理所有的权限,包括功能权限和资源权限。角色管理模块负责管理所有的角色,包括管理员、普通用户等。用户管理...

    用户角色权限管理模块

    在IT系统设计中,用户角色权限管理模块是一个至关重要的组成部分,它主要负责维护系统的安全性和访问控制。这个模块确保了不同类型的用户只能访问他们被授权的功能和数据,从而保护了系统的完整性并提升了用户体验。...

    java权限管理与日志记录模块的设计与开发(源代码+论文)

    本文设计的系统管理功能模块采用了多用户多角色管理机制,确保不同的用户登录系统后能够操作属于自己权限范围内的功能。系统功能管理模块主要由用户管理子模块、角色管理子模块、角色设置管理子模块、权限管理子模块...

    毕业设计,基于ASP.NET+SqlServer开发的教务管理平台-权限及公共模块设计,内含完整源代码,数据库,毕业论文

    毕业设计,基于ASP.NET+SqlServer开发的教务管理平台-权限及公共模块设计,内含完整源代码,数据库,毕业论文 随着教育改革的不断深化,高等院校的建设与发展对国民整体素质的提高起着越来越重要的作用,建立一套...

    一个简单实用的系统管理模块(权限管理模块)例子

    在IT行业中,权限管理和系统管理模块是构建任何大型或复杂应用程序不可或缺的部分。权限管理确保了用户只能访问他们被授权的功能和数据,而系统管理模块则提供了对整个系统的配置、监控和维护工具。以下是对这个“一...

    教务管理平台-权限及公共模块设计与开发.rar

    总的来说,教务管理平台的权限及公共模块设计与开发是一项涉及用户权限控制、通用功能模块构建、Web应用开发技术和数据库设计等多个方面的综合性任务。通过合理的RBAC实现和公共模块设计,可以提供一个安全、高效、...

    基于ASP.NET+Sqlserver 实现的教务管理平台-权限及公共模块设计与开发毕业设计(源代码+论文)

    【作品名称】:基于ASP.NET+Sqlserver 实现的教务管理平台-权限及公共模块设计与开发【毕业设计】(源代码+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、...

    JSPSmart系统-权限管理与日志记录模块的设计与开发(源代码+论文).zip

    《JSPSmart系统:权限管理与日志记录模块的设计与实现》 在信息化时代,权限管理和日志记录是任何企业级应用系统的核心组成部分。本文将深入探讨基于JSP技术的智能系统——JSPSmart中,如何设计并实现这两个关键...

    基于django的RBAC权限控制模块

    **基于Django的RBAC权限控制模块** 在Web开发中,权限控制是不可或缺的一部分,它确保用户只能访问他们被授权的资源。Role-Based Access Control(RBAC)是一种常见的权限管理模型,通过角色来分配权限,使得系统...

Global site tag (gtag.js) - Google Analytics