zoukankan      html  css  js  c++  java
  • 关于web应用程序权限管理的总结(实现)

     

    1、基于web信息管理系统的权限设计分析和总结(理论)

    2、基于web信息管理系统的权限设计分析和总结(数据结构)

    3、基于web信息管理系统的权限设计分析和总结(实现)

    首先要说明两点:

    1、 本文不是解决一个通用权限管理系统的方案,只是解决特定环境下的权限管理问题。本文给出的实际实现方法是基于sql server数据库的,实现的语言是使用T-Sql语言。当然您可以有更多的实现方式。

    2、 附件给出的数据库例子没有经过严格测试,不保证逻辑的正确性,以及性能方面的问题。

    首先需要一个存储过程来实现计算用户在表单上的权限,这个存储过程接受两个参数,用户ID和表单ID,在这个存储过程里面使用一条sql语句来计算用户在表单上的权限,如下所示:

    Code

    在这个存储过程里面,有两个用户函数,分别用于计算字段权限和记录权限。

    用于计算字段权限的函数是fun_Purview_GetColumns,这个函数接受三个参数,分别是用户ID、表单ID和字段权限类型,具体如下所示:

    Code

    用于计算记录权限的函数是fun_Purview_GetRecordPurview,这个函数接受三个参数,分别是用户ID、表单ID和记录权限类型,具体如下所示:

     

    Code

    使用上面的函数就可以计算用户在表单上的权限了。

     

    另外,您也可以对此权限模型进行扩展,比如您可以对角色设置一个角色的权限计算类型属性.

    如果此角色是悲观型的,那么此角色和其他角色进行权限计算是,使用最小的权限集合。具体来说对于字段权限,使用与操作,对于字段权限和记录权限,使用交集。如果此角色是乐观型的,那么此角色和其他角色进行权限计算是,使用最大的权限集合。具体来说对于字段权限,使用或操作,对于字段权限和记录权限,使用并集。

    在具体的项目实践中,为了提高性能,可以设置一些缓存,例如可以把上面的计算结果缓存到一个数据表里面,作为一级数据缓存。在程序中,还可以使用二级缓存在内存中保存用户的权限,当然这样做在提高性能的同时,也增加了程序的复杂度和数据的冗余,需要处理更多的地方。

    最后,本文提供了一个可以执行的数据库备份,您可以点击此处下载。注意是sql2005的数据备份文件。

    ========================================================

    比sharepoint更强大的表单功能,图形化的流程设计,与asp.net完美结合,支持vs.net编程扩展

    ========================================================

  • 相关阅读:
    Log4j学习
    HttpURLConnection请求
    正则表达式验证中文、图片上传
    freemarker学习
    参数中带有“&”符号问题
    禁止打印页面
    myEclipse 界面窗口打不开问题
    屏蔽网页右键
    分享功能
    table表格某一td内容太多导致样式混乱的解决方案
  • 原文地址:https://www.cnblogs.com/chegan/p/1503308.html
Copyright © 2011-2022 走看看