SRF之权限控制
如何使用
1、web.config相关的配置
<configSections>
<section name="MembershipProvider" type="SRF.Security.Principal.MembershipSection, SRF.Security" requirePermission="false" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<section name="PermissionProvider" type="SRF.Security.Permission.PermissionSection, SRF.Security" requirePermission="false" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<section name="SecurityProvider" type="SRF.Security.SecuritySection, SRF.Security" requirePermission="false" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<section name="DataRuleProvider" type="SRF.Security.DataRule.DataRuleSection,SRF.Security" requirePermission="false" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<MembershipProvider defaultProvider="MyMembershipProvider">
<providers>
<add name="MyMembershipProvider" type="SRF.Components.Security.MyMembershipProvider, SRF.Components.Security"/>
</providers>
</MembershipProvider>
<PermissionProvider defaultProvider="MyPermissionProvider">
<providers>
<add name="MyPermissionProvider" type="SRF.Components.Security.MyPermissionProvider, SRF.Components.Security"/>
</providers>
</PermissionProvider>
<DataRuleProvider defaultProvider="MyDataRuleProvider">
<providers>
<add name="MyDataRuleProvider" type="SRF.Components.Security.MyDataRuleProvider, SRF.Components.Security"/>
</providers>
</DataRuleProvider>
<appSettings>
<!--是否对用户密码加密-->
<add key="EncryptPassword" value="true"/>
<add key="MvcSiteMapProvider_SiteMapFileName" value="~/Mvc.sitemap"/>
<add key="MvcSiteMapProvider_SecurityTrimmingEnabled" value="true"/>
<add key="MvcSiteMapProvider_DefaultSiteMapNodeVisibiltyProvider" value="SRF.UI.SiteMapNodeVisibilityProvider, SRF.UI"/>
</appSettings>
2、调用
(1)配置

在后台配置功能和和数据权限。
(2)在控制器类或控制器的函数上加[Authorize],表示只有配置访问给Action时进行验证,如
[Authorize]
public class DefaultController : Controller
{}
(3)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$}
那么用户拥有该数据规则的权限则用该过滤条件替换语句的相应的语句片段。
如何实现
1、模型

一个用户可以属于多个角色,给角色分配权限
2、url验证
url访问验证有SRF.Security.Authorize调用 SecurityContext.HasUrlGrant()进行验证
3、html标签的显示/有效的控制
@Html.Authorize() 根据参数和权限配置生成js脚本,调用common.js的security.verify()。
4、菜单权限
网站的导航菜单采用MvcSiteMapProvider.dll实现,SiteMapAclModule实现导航菜单的验证
/// <summary>
/// 菜单节点过滤器
/// </summary>
public class SiteMapNodeVisibilityProvider : MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider
{
public override bool IsVisible(MvcSiteMapProvider.ISiteMapNode node, IDictionary<string, object> sourceMetadata)
{
bool visible = base.IsVisible(node, sourceMetadata);
if (visible)
{
visible = SRF.Security.SecurityContext.HasUrlGrant(node.Url);
} return visible;
}
}
在web.config:
<add key="MvcSiteMapProvider_DefaultSiteMapNodeVisibiltyProvider" value="SRF.UI.SiteMapNodeVisibilityProvider, SRF.UI"/>
SRF之权限控制的更多相关文章
- 尝试asp.net mvc 基于controller action 方式权限控制方案可行性
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...
- MongoDB 安全和访问权限控制
MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端口,使用账户和密码登录 一,访问控制的参数 1,绑定IP地址 mongod 参数:-- ...
- WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方 ...
- ASP.NET MVC实现权限控制
这篇分享一下 ASP.NET MVC权限控制.也就是说某一用户登录之后,某一个用户是否有权限访问Controller,Action(操作),视图等 想实现这些功能,需要在数据库创建好几个表:[User ...
- springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】
项目结构: 1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- Appfuse:权限控制
Appfuse的权限控制依赖于Struts的Menu机制,common下的menu.jsp是对菜单顺序的定义,详细的菜单项和菜单链接及权限再menu-config.xml中控制,如下: <Men ...
- .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...
- 浅谈Yii-admin的权限控制
说到CMS,最需要有的东西就是权限控制,特别是一些复杂的场景,多用户,多角色,多部门,子父级查看等等.最近在开发一个线下销售的东东,这个系统分为管理员端,省代端,客户端,门店端,销售端, 部门端,部门 ...
- Go语言实战 - revel框架教程之权限控制
一个站点上面最基本都会有三种用户角色,未登录用户.已登录用户和管理员.这一次我们就来看看在revel框架下如何进行权限控制. 因为revel是MVC结构的,每一个url其实都会映射到一个具体的Cont ...
随机推荐
- 转 UITabBarController简单介绍
文顶顶 iOS开发UI篇—UITabBarController简单介绍 iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavi ...
- 【CImg】三角形绘制算法实现
这周的CV基础练习是简单的图形绘制:比如说矩形.三角形和圆心什么的.会发现其实矩形和圆形的实现思路都很直白,矩形只需要确认两个对角坐标就可以了,圆心只需要确认圆心和半径,接着就是简单的遍历各个像素点判 ...
- Robotlegs2 学习笔记 -- SwiftSuspenders 2.x (2)
Swiftsuspenders2简介 Swiftsuspenders2是一个基于元数据(metadata)的IOC(控制反转,inversion of control)的AS3的解决方案.(对于元数据 ...
- 慕课网-安卓工程师初养成-4-7 Java循环语句之 while
来源: http://www.imooc.com/code/1420 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...
- SQL基本语句(3) LOAD DATA INFILE
使用LOAD语句批量录入数据 语法: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNOR ...
- 把数组转换成sql中能使用的字符串
1.数组对象转换成字符串,拼接成符合sql语句的语法 2.代码如下例子 public static void testString(){ String[] str=new String[ ...
- file not found while xcode archive
今天碰到一个问题,就是我像在我的ios app中添加支付宝功能,按照文档我添加好了测试也成功,但是在archive的时候就是出问题,很奇怪.最后网上查了文档,最后在stackoverflow上面找到了 ...
- 在C++中调用DLL中的函数 (3)
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- 五、用户数据报传输(UDP)
1.UDP常用的发送和接收函数 int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,i ...
- HTML中,按钮button与submit区别是什么?
type=button 单纯是按钮功能:type=submit 是发送表单:既然是这样,那么能否全部用submit代替button? Sumit提交表单,Button需要绑定事件才可以用提交数据不可以 ...