To: dotAge 本文中对 Task 层次的实现较为简单,如果 Task 很多,确实在设置 Role<–>Task 的映射关系时比较麻烦。 有两种做法: 1) 将多个方法的 Task 指定为同一个 如 AddItem, RemoveItem, ListItem 等方法上都设置同样的 Task("ItemManage","Item管理") ,这样能大量减少 Task 的数量,但也使得控制粒度变粗了。 2) 按照 Authorization Manager 的做法(其中分为 Task 和 Operation,一个 Task 可以包含多个 Operation),在 Task 上层再加一层,例如你说的 Category,实现这个也不难,对上文中的相关代码进行更改就可以实现,这一部分不是固定的,是可以根据具体情况灵活定制的。
以上代码是从项目文件提取出来的,所以没有 Demo ,如果你想使用的话,其实很简单: 1) 新建 Web 项目 2) 把上文中的 4 个类加入到项目中(Task.cs, SecurityAspect.cs, AzHelper.cs, AzMan.cs) 3) 按照上文中的 ItemManager 类的方式式来建立一个业务逻辑类 4) 把上文中的 XML 文件加入到 App_Data 目录下 5) 新加一个页面,调用你的 ItemManager 类即可
仅仅是一个RBAC0的实现,且不说操作的层级和关联,还缺少资源约束等必要的东西,我们的做法是建立一个统一的权限管理系统,公司的所有应用都从一个地方获取,角色和操作可以在权限系统中编辑和定义,业务系统可以提供自己的资源组服务,从而实现权限系统和业务系统权限的无缝整合
你好, 我也根据你的设计写了类似的继承expression builder的自定义类型,但我发现在编译后代码第一次运行的时候(还没有进入登陆界面接收到用户登陆ID信息), CLR就已经开始加载自定义的expression builder来解释含有<%# %>的页面, 以后就不再解释该页面了,这样的话我的权限验证只能拿到TASK的信息而拿不到USER的信息,不能进行验证.请问这是什么原因?
<asp:Button ID="Button1" runat="server" Enabled="<%$ PermissionCheck:AddItem %>" Text="<%$ PermissionCheck:AddItem %>"/>我使用这种方式进行绑定,同时设定断点,但是有时很不稳定,不进入断点,而且给的值是TRUE(其实我给的值是FALSE).
public class ItemManager : ContextBoundObject 这样局限性我觉得有点大啊,毕竟C#不允许多继承,如果想继承其它类的话,就有点麻烦了。 另外不知道ASP.net中频繁的用ContextBoundObject的性能如何。 博主可否把你的代码发给我研究下? [email protected]
good job!
好文章, 辛苦了
文章中的代码部分的字体较小,这好象是页面模板造成的,没法更改,大家可以把 IE 中将字体设置为“较大”,或者利用 IE7 的页面 Zoom Level 放大来浏览代码。
TASK有没有category?
否则业务稍一复杂,授权UI就很不友好了。
写得不错,支持一下
挑个小毛病:
“它不便提供了原理介绍”
=>它不仅提供了原理介绍
对吧?:)
To: dotAge
本文中对 Task 层次的实现较为简单,如果 Task 很多,确实在设置 Role<–>Task 的映射关系时比较麻烦。
有两种做法:
1) 将多个方法的 Task 指定为同一个
如 AddItem, RemoveItem, ListItem 等方法上都设置同样的 Task("ItemManage","Item管理") ,这样能大量减少 Task 的数量,但也使得控制粒度变粗了。
2) 按照 Authorization Manager 的做法(其中分为 Task 和 Operation,一个 Task 可以包含多个 Operation),在 Task 上层再加一层,例如你说的 Category,实现这个也不难,对上文中的相关代码进行更改就可以实现,这一部分不是固定的,是可以根据具体情况灵活定制的。
请问LZ,有demo吗,能否提供下载,这样看起来更方便一些
nice work!
To 小新0574 :
谢谢你指出错误,但 FreeTextbox 修改一次,里面的代码就全乱了,所以暂时将错就错,请谅解 🙂
有demo吗,能否提供下载,这样看起来更方便一些
以上代码是从项目文件提取出来的,所以没有 Demo ,如果你想使用的话,其实很简单:
1) 新建 Web 项目
2) 把上文中的 4 个类加入到项目中(Task.cs, SecurityAspect.cs, AzHelper.cs, AzMan.cs)
3) 按照上文中的 ItemManager 类的方式式来建立一个业务逻辑类
4) 把上文中的 XML 文件加入到 App_Data 目录下
5) 新加一个页面,调用你的 ItemManager 类即可
仅仅是一个RBAC0的实现,且不说操作的层级和关联,还缺少资源约束等必要的东西,我们的做法是建立一个统一的权限管理系统,公司的所有应用都从一个地方获取,角色和操作可以在权限系统中编辑和定义,业务系统可以提供自己的资源组服务,从而实现权限系统和业务系统权限的无缝整合
这样做在性能上的损失如何?
企业内部,我还是喜欢AzMan ^^
internet上的企业应用,有点让人崩溃的想法
如果是静态方法,又该如何处理?
2.0中不是提供了membership框架么?基本的角色权限访问都可以了,再稍微配合一下自定义的控制方法就可以吧。。。
继承自CBO的对象,调用时会跨Context,会有性能损耗
有代码下载那就好啊
文章在ie6中,opera9,ff中都不能很好的现实….看起来不舒服,要结合多个浏览器…晕倒…
收益匪浅
但是由于功力尚浅,看得不甚了了,强烈希望有个Demo下载,或者您发一份给我,谢谢
sexycoolwolf(at)gmail.com
作者没有对aop做个很好的规划和设计,这篇文章太正对性了.
不过很感谢作者,学到了个新的用法"ASP.NET 2.0 中的表达式功能".
强烈要求楼主提供一个示例!!!。真是好东西。。严重支持
未启用角色管理器功能
我运行提示这个错误
未启用角色管理器功能
我运行提示这个错误
这里没有和用户名关系起来啊?
如何指定哪个用户有哪个权限啊??
你好, 我也根据你的设计写了类似的继承expression builder的自定义类型,但我发现在编译后代码第一次运行的时候(还没有进入登陆界面接收到用户登陆ID信息), CLR就已经开始加载自定义的expression builder来解释含有<%# %>的页面, 以后就不再解释该页面了,这样的话我的权限验证只能拿到TASK的信息而拿不到USER的信息,不能进行验证.请问这是什么原因?
问题已经解决.
问题已经解决. 把相关ASPX设为非编辑页面就行了.
楼住能不能提供一个完整的DEMO啊。 。
谢谢啊
email:[email protected]
问个小问题。这里的ItemManager是从ContextBoundObject继承的,可是如果我的某个类原来就需要从某个父类继承,就无法再继承ContextBoundObject了,那怎么办呢?
[email protected]
能不能发给我一份
[email protected]
麻烦问一下这个只能在VS2005上用吗?
VS2003可以用吗?
这里没有和用户名关系起来啊?
如何指定哪个用户有哪个权限啊??
我也碰到上述疑问,到底怎么用啊?
Good!
太好!终于找到了
能不能,发个“源码”至 [email protected]
非常感谢!
太好!终于找到了,能不能给个原代码看看
发到[email protected]
谢谢!
也给我发一份啊,学习中,好东西。谢谢了
[email protected]
大哥发一分完整的给我吧:[email protected]
能不能给我发一份 [email protected]
能不能也发份给我,谢谢
[email protected]
能不能给份学习一下啊,谢谢,[email protected]
非常的厉害!!!!!
佩服!希望能看到楼主关于权限更深入的文章。就算是一点点思路也好!
读一篇可以少摸索10天了。
<asp:Button ID="Button1" runat="server" Enabled="<%$ PermissionCheck:AddItem %>" Text="<%$ PermissionCheck:AddItem %>"/>我使用这种方式进行绑定,同时设定断点,但是有时很不稳定,不进入断点,而且给的值是TRUE(其实我给的值是FALSE).
您是高手,请问能不能帮助做一个基于文档的RBAC模拟.付报酬! 联系方式:[email protected]
能不能,发个“源码”至 [email protected]
非常感谢!
public class ItemManager : ContextBoundObject
这样局限性我觉得有点大啊,毕竟C#不允许多继承,如果想继承其它类的话,就有点麻烦了。
另外不知道ASP.net中频繁的用ContextBoundObject的性能如何。
博主可否把你的代码发给我研究下?
[email protected]
老大,可否发份源码给我研究一下。谢谢。
email: ldaqiang#gmail.com
老大,可否发份源码给我研究一下。谢谢。 email: [email protected]