大家谈谈
当然有个好的例子的就更好了!!!!
当然有个好的例子的就更好了!!!!
解决方案 »
- 如何获取点击的Button
- DropDownList为什么只能取到第一个值
- 关于三层架构学习的问题
- nant--使用过的人进来指导下--50分
- .Net中如何得知表中一字段的值为空?
- 未将对象引用设置到对象的实例-----大哥们,急啊
- 关于设置GridView单元格的值,双击该单元格显示√,再双击一次,显示为空。 如何实现?
- DropDownList 列表绑定问题
- 帮我看看这个错误如何解决?
- 求一段文件上传的代码
- 如何通过反射动态的指定数据类型如:将"System.Data.SqlDbType.VarChar"字符串直接转换为相应的类型
- 11岁小学生成软件工程师 欲申报吉尼斯世界纪录。已经掌握了C++、C、JAVA等十多种编程语言。狂汗......
用了6个表
userbaseinfo 用户基本信息
role 角色表
function
basefunction 功能模块表 用了两个表,产生一个伸缩的二级菜单
感觉可以只用一个,懒得去改
userroles 用户角色分配表 一对多
rolerights 角色权限表 可以将权限细化到增,删,改 用的字符串标记一个用户可以拥有多种角色,但登陆时只能选择一种角色进入
系统根据角色权限生成树型菜单
<forms loginUrl="login.aspx"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>.CS----------------->string UserName=this.TextBox1.Text.Trim();
FormsAuthentication.RedirectFromLoginPage(UserName,false);
Response.Redirect("default.aspx?User="+this.TextBox1.Text.Trim());得到用户名----------》 User.Identity.Name注销----------------》FormsAuthentication.SignOut();设置不需要验证的页可以在config里这样写,如下面的NewUser.aspx页
<location path="User/NewUser.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
[Author] Pizer.Chen
[Email ] [email protected] | [email protected]
[Date ] 2002-11-3----------------------------------------------------------------------------
我以前设计过一个权限系统的模型,但是我没有实现,
可以说出来,大家讨论一下。我认为一个系统的权限部分应该由以下四个部分组成:[*] Resource
[*] Privilege
[*] Role
[*] User另外,一个系统中最少有这么几个角色:
[*] Creator, 也可以称做 Programmer.
[*] Administrator, 超级用户
[*] General User----------------------
权限各部分之间的关系:
----------------------
1. Resource 就是系统的资源,比如部门新闻,文档等各种可以被提供给用户访问的对象.2. Privilege 是 Resource Related 的权限。
什么意思?就是指,这个权限是绑定在特定的资源实例上的。
比如说部门新闻的发布权限,叫做"部门新闻发布权限".
这就表明,该 Privilege 是一个发布权限,而且是针对部门新闻这种资源的一种发布权限。
我认为,Privilege 是由 Creator 在做开发时就确定的。3. Role, 是角色,拥有一定数量的权限。4. User, 与 Role 相关。在我设计的系统里,User是不能与 Privilege 直接相关的,
User 要拥有对某种资源的权限,必须通过Role去关联.----------------------
系统大串联:(^_^)
----------------------
下面简单介绍一下,一个权限从开发到使用的过程.1. Creator 创造 Privilege, Creator 在设计和实现系统时会划分,一个子系统或称为模块,
应该有哪些权限. 拿新闻这一块来说,可能应该有:
[*] 发布权限(publish)
[*] 修改权限(modify)
[*] 审核权限(review)
[*] 浏览权限(visit)
.......
这里完成的是 Privilege 与 Resource 的对象申明,并没有真正将 Privilege 与具体
Resource 实例联系在一起.2. Administrator 指定 Privilege 与 Resource Instance 的关联.
在这一步, 权限真正与资源实例联系到了一起, 产生了 Privilege Instance。
比如,Administrator 创建了一个叫做 "部门新闻" 的Resource Instance.
然后将发布权限与这个资源相关联,产生出 "部门新闻发布权限" 这个 Privilege Instance.3. Administrator 创建一个角色,称做 "部门新闻发布者". 4. Administrator 将 "部门新闻发布权限" 赋予 "部门新闻发布者". 5. Administrator 从用户列表中选取一个或多个用户,
然后给这些用户赋予 "部门新闻发布者" 的角色6. User 进到系统,在它的可访问资源列表上,会出现"部门新闻发布"的链接. 7. User 点击 "部门新闻发布"的链接, 根据 Creator 的实现,系统会检查
[1] 当前用户是否拥有发布权限
[2] 当前用户的发布权限是否与能操作正在访问的资源.----------------------
结束语
----------------------
这是我一次在飞机场等飞机时突然设计出来的东西。因为没有具体实现,
而且也可能因为时间仓促,没有想得很透彻,希望写出来大家讨论一下。
具体实现上的技术问题,我也想过,我觉得应该已经想通,但是介于时间关系,
这里写不了啦,大家可以谈谈看法 .