博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SRF之权限控制
阅读量:5207 次
发布时间:2019-06-14

本文共 1992 字,大约阅读时间需要 6 分钟。

框架目前提供url访问、菜单和页面元素的权限控制和数据权限,权限基于角色来分配,1个用户可以属于多个角色,权限项分模块、页面、操作3级别,其中模块、页面用于url和菜单的控制,操作是对页面元素的控制。
相关模块
链接库:SRF.Security.dll、SRF.Components.Security.dll
业务层:SRF.DomainModel.Admin
 

如何使用

 

1、web.config相关的配置

View Code

2、调用

(1)配置

在后台配置功能和和数据权限。

 

(2)在控制器类或控制器的函数上加[Authorize],表示只有配置访问给Action时进行验证,如

[Authorize]    public class DefaultController : Controller   {}

(3)html标签权限

根据权限配置控制html标签的显示/有效。
在页面增加下边的代码:
@Html.Authorize(     new ActionItem("#add", "visible", "allowadd") //标签selector,属性(display、visible、enabled),操作编码 )

  (*这里是通过js来实现html标签的控制,不保证安全)

(4)数据权限

在后台配置数据规则和sql配置的变量相对应,如

数据规则配置的过滤条件为 ”and CreatedBy=@user.id ”,sql语句:select*from OM_Order where 1=1 {$rule.byuser$}

那么用户拥有该数据规则的权限则用该过滤条件替换语句的相应的语句片段。

(5)安全相关的功能在SRF.Security.SecurityContext,提供登陆、注销、当前用户、检测是否具有访问权限等函数
  

如何实现

1、模型

 

一个用户可以属于多个角色,给角色分配权限

2、url验证

url访问验证有SRF.Security.Authorize调用 SecurityContext.HasUrlGrant()进行验证

3、html标签的显示/有效的控制

@Html.Authorize() 根据参数和权限配置生成js脚本,调用common.js的security.verify()。

4、菜单权限
网站的导航菜单采用MvcSiteMapProvider.dll实现,SiteMapAclModule实现导航菜单的验证

 

///     /// 菜单节点过滤器    ///     public class SiteMapNodeVisibilityProvider : MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider    {        public override bool IsVisible(MvcSiteMapProvider.ISiteMapNode node, IDictionary
sourceMetadata) { bool visible = base.IsVisible(node, sourceMetadata); if (visible) { visible = SRF.Security.SecurityContext.HasUrlGrant(node.Url); } return visible; } }

 

在web.config:

 

转载于:https://www.cnblogs.com/zengyy/p/3361368.html

你可能感兴趣的文章
JS浮点类型计算
查看>>
oracle ebs Customer Info
查看>>
Android——Fragment详解
查看>>
开发期间的GWT设置---加快编译速度
查看>>
Javascript中无法创建ActiveXObject("WScript.Shell")对象的解决方案
查看>>
Centos 装系统 配置网卡,校准时间
查看>>
MyBatis工具类
查看>>
leetcode 89. 格雷编码
查看>>
1144 The Missing Number
查看>>
【Leetcode】Clone Graph
查看>>
static的继承,静态方法只能继承,不能重写
查看>>
登陆系统
查看>>
unity 如何在botton AddListen中传递参数调用函数
查看>>
Linq之 Linq to Object
查看>>
CSS3新功能
查看>>
angularjs
查看>>
升级时出现错误的解决办法
查看>>
Hello World!
查看>>
js表格打印自动分页demo
查看>>
【分享】Windows日志查看工具分享
查看>>