惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
NISL@THU
NISL@THU
T
Tailwind CSS Blog
博客园 - 【当耐特】
P
Privacy International News Feed
I
InfoQ
L
LINUX DO - 热门话题
H
Help Net Security
博客园 - 叶小钗
aimingoo的专栏
aimingoo的专栏
AWS News Blog
AWS News Blog
Scott Helme
Scott Helme
Cyberwarzone
Cyberwarzone
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Forbes - Security
Forbes - Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
T
Troy Hunt's Blog
Spread Privacy
Spread Privacy
V
V2EX
Cloudbric
Cloudbric
Security Latest
Security Latest
H
Heimdal Security Blog
S
Securelist
I
Intezer
F
Full Disclosure
V2EX - 技术
V2EX - 技术
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
Security Archives - TechRepublic
Security Archives - TechRepublic
L
Lohrmann on Cybersecurity
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA

博客园 - craboYang

JVM: can not create native thread 注解式功能权限控制机制 SqlInXml 动态配置化 ElasticSearch5集群部署指南 Solr5 DataImport 处理1对多关系 C# XMPP客户端与openfire通信(Matrix Xmpp 授权破解教程) 响应式编程 Part.01 (Layout and MVVM) Mono.Ceil 无法保存Silverlight 程序集 基于system.diagnostics Trace的日志输出 Dappers 开发入门 (5) - 缓存 Dappers 开发入门 (4) - 明细编辑 Dappers 开发入门(3)- 列表界面 Dappers 开发入门(2) - Mapping Dappers 开发入门(1) - 接口 Dappers : 基于Dapper.net 扩展的Dao - Part II Dappers : 基于Dapper.net 扩展的Dao B/S页面 通用权限控制(2) 由于ContractFilter在EndpointDispatcher不匹配,因此Action为<BtsActionMapping...的消息无法在接收方处理 - craboYang - 博客园 WinForm DataGridView 绑定后仅显示许多空行和空格
B/S页面 通用数据权限控制
craboYang · 2010-09-10 · via 博客园 - craboYang

    数据权限常见场景有:

    1. 数据仅部门级可见
    2. 数据仅本人可见
    3. 数据仅某角色可见
    4. 在可见的基础上,进行功能控制: 修改,删除
    5. 在树形结构里,在可见基础上进行 新增/修改/删除控制

我的实现方式: 资源---所有者   (请思考哪些可以是资源, 哪些可以是所有者)。 例如:在一个OA应用中的拟办工作,它是所有单证流程的起始点。但不同的流程面,有效的发起人是必须限定的:请假单--全体人员; 收文发文--办公室人员;会议室申请单--项目经理;下面我将实现的是:所有的单证都从属于类别,所有属于“OA单证”,仅“办公室”人员可以拟定。

      1. 确定资源定义位置。  如用户,则用户维护页是该资源的位置,资源的Id就是UserId。 这里进入“表单类别设定页面”。

      001

    按住Alt+双击 页面空白处,弹出资源授权页,选择操作为“查看”。实际上,任何拥有“修改”的人,都拥有查看权限,同理: 查看<修改<创建<删除.

    002

         2. 为指定资源设置“所有者”。 所有者类型可以有: 部门/人员/工作组/角色组

    003

      3. 保存设置。 这样就配置了仅“办公室”“陈伟”能拟定“OA表单”了。

      4.现在进入“拟办工作页面”。 此时权限尚未启用。 (哪些点可以进行权限控制? Request—>Service—>Dao—>Db  已及反方向)

    004

    5. 在拟办工作页面, 生成树形节点, 查询节点中,加入c.Id 控制。  这就意味着, 输出列表时,会检验每一个“类别”,判断当前用户是否属于授权的“部门/用户/工作组”

    005

    6. 用财务部人员登录系统,类别“OA单证”已经消失了。

    006

    7.以上Magic仅仅是QueryInfo在提交NHibernate之前的一个小动作,调用AclHQLInjector而已。 目前的触发条件是AclProperty。 对于大量数据权限定义的情况, 完全可以将Inject条件在数据库中定义。 QueryInfo默认触发检验即可。

    8. 最后可见 数据权限设置表 的简单结构:

    007