asp.net 用户 角色管理

wangweixaut061 2010-06-05 09:23:08
准备使用ASP.NET管理工具管理角色,但是数据库默认的是SQL Server,而我因需要使用的是kingbaseES(国产数据库),怎么来进行用户(管理员,学生,教师,游客,四类用户)权限和角色管理啊?或给个其他可行的方法,谢谢,呵呵
...全文
370 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglot 2010-06-05
  • 打赏
  • 举报
回复
好久没来这里了,这个东西你可以百度下RBAC.
【1】用户表(用户ID,用户登入名,用户姓名,上级领导,删除标志)
用户表具体存储数据如下
1 admin 系统管理员 NULL 0
2 kinglot 小笨 1 0
……
【2】组织表(组织ID,组织名称,父级ID,备注,删除标志)
组织表具体存储数据如下,注意此表为层级关系:
+--××集团
+--公司A
--公司A信息部
--公司A牛逼部
--公司A牛逼部1分部
--公司A牛逼部2分部
+--公司B
--公司B财务部
--公司B销售部
+--公司C
--公司C部门A
--公司C部门B
--公司C部门C
……
【3】职位表(职位ID,职位名称,职位备注,删除标志)
职位表主要影响系统流程,具体存储数据如下:
1 系统管理员 管理整个系统 0
2 总经理 牛逼的职位 0
3 一般职员 被剥削的职位 0
4 挨踢职员 软件开发专员 0
……
【4】角色表(角色ID,角色名称,备注,删除标志)
角色表具体存储数据如下:
1 公司A系统管理员 无 0
2 公司B系统管理员 无 0
3 公司总经理 无 0
4 一般职员 无 0
……
按钮表(按钮ID,按钮名称,按钮服务端ID,备注,删除标志)
按钮表具体存储数据如下,注意该表在系统中仅作为一个参考表:
1 添加 btnAdd 无 0
2 删除 btnDel 无 0
3 修改 btnModi 无 0
……
模块/导航/操作表(导航ID,导航名称,导航图标,导航链接/按钮ID/事件名称,非导航项,父级ID,备注,删除标志)
模块表具体数据如下:
1 后台管理 1 NULL False NULL NULL 0
2 用户管理 1 Manage/W_UserManage.aspx false 1 NULL 0
3 添加 NULL btnAdd true 2 0
4 修改 NULL btnModi true 2 0
5 删除 NULL btnDel true 2 0
6 查看个人数据 NULL ViewPersonal true 2 0
7 查看所有数据 NULL ViewAll true 2 0
……
最终生成出这么一个层级导航,注意层级关系:
+---后台管理
--用户管理
--添加
--修改
--删除
--查看个人数据
--查看所有数据
--组织管理
--添加
--修改
--删除
+---沟通平台
--收件箱
--查看个人数据
--查看所属组织数据
--查看全部数据
--删除
--发件箱
--内部邮箱
--外部邮箱
……
用户职位关联表(用户ID,职位ID)
一个用户对应一个或多个职位。
用户组织关联表(用户ID,组织ID)
一个用户对应一个或多个组织/公司/部门
用户角色关联表(用户ID,角色ID)
一个用户对应一个或多个角色
角色导航关联表(角色ID,模块导航ID)
一个角色对应一个或多个导航/按钮/事件

我不知道你能否理解我上面描述的东西,我表达能力不是很好,希望对你有点帮助。
不懂装懂 2010-06-05
  • 打赏
  • 举报
回复
用户表居然分了3个。。。看2楼人生老大的建议吧,不误导你了。。。
ningmengyu888 2010-06-05
  • 打赏
  • 举报
回复
其核心是建立起用户、角色,功能,模块功能四者的关系。数据库设计如下

1 用户角色表

User表
字段:userid 自递增字段

username
password

RoleTable表(角色表)
字段
Roleid 自递增字段

RoleName

用户角色表 UserRole
字段
UserRoleid(自递增字段)
userid
roleid

用户表和角色表通过用户角色表进行关联,用户和角色之间的关系是多对多

2 角色权限表RoleRight
字段
RoleRightId 自递增字段
RoleId
ModuleFunctionId

这里解析一下,比如用户tom,具有管理员的角色(假设在roletable表中,存在如下一条记录
Roleid RoleName
2 admin


那么在RoleRight表中,存在如下形式的记录
RoleRightId RoleId ModuleFunctionId
1 2 10
2 2 11

即说明,roleid=2的管理员角色,具有moduleidfunctionid=10和11的权限


接着往下看

3 Module表(模块表)
字段
moduleid modulename url
1 学生档案 xxxxx
2 教师档案 xxxxxxx

4 ModuleFunction表(模块-功能表)

字段
modulefunctionid moduleid functionid
.....................
10 1 1
11 1 2


5 function表(功能表)
字段
functionid functioname
1 add
2 update
3 delete
4 search

可以看到,刚才管理员角色拥有的10,11两个权限,可以在modulefunction表中找到,即在moduleid=1(学生档案)这个模块中拥有两类
可以执行的功能,是什么功能呢?查看functionid可以知道,有add和update的功能了



这样的好处是,“模块”,“功能”,“组”,“人”可以任意添加,彼此不受影响。既可以直接为每个用户直接赋予权限,也可以为一类用户归到角色,再在角色里统一给权限。
但实际上,一般没多大必要设立function表去放这些权限,来来去去都是CRUD这些
wangweixaut061 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fdh120 的回复:]
引用 4 楼 wangweixaut061 的回复:

引用 2 楼 wuyq11 的回复:
通过角色,模块,用户实现关联
用户表
系统模块表
角色表
角色权限表
通过角色授权访问相关功能.

能说的具体点儿吗?我第一次用,第一此作网站,是毕业设计,马上要答辩了,呵呵谢了

赶毕设的话,就简单点。用户表加标记为state,int型,0管理员,1学生,2教师,3游客
每次浏……
[/Quote]

我是做了三个表,管理员,学生,教师,每个表单独加state?呵呵,我只需要让他们能访问的页面不同,使用ASP.NET的管理方案很麻烦是吗?要是那样的话,也只能加state了,呵呵
不懂装懂 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangweixaut061 的回复:]

引用 2 楼 wuyq11 的回复:
通过角色,模块,用户实现关联
用户表
系统模块表
角色表
角色权限表
通过角色授权访问相关功能.

能说的具体点儿吗?我第一次用,第一此作网站,是毕业设计,马上要答辩了,呵呵谢了
[/Quote]
赶毕设的话,就简单点。用户表加标记为state,int型,0管理员,1学生,2教师,3游客
每次浏览网页先找state判断给不同的用户显示不同权限下的控件
wangweixaut061 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
通过角色,模块,用户实现关联
用户表
系统模块表
角色表
角色权限表
通过角色授权访问相关功能.
[/Quote]
能说的具体点儿吗?我第一次用,第一此作网站,是毕业设计,马上要答辩了,呵呵谢了
wangweixaut061 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gamestory 的回复:]
需要自定义自己的Provider,用户管理从MembershipProvider派生,角色管理类从RoleProvider类派生,你可以参考MySql提供的用户管理及角色管理Provider,网上有源码,搜一下就能找到。另外MSDN中也有详细的介绍
[/Quote]

发布到IIS上也一样可以用吗?
wuyq11 2010-06-05
  • 打赏
  • 举报
回复
通过角色,模块,用户实现关联
用户表
系统模块表
角色表
角色权限表
通过角色授权访问相关功能.
gamestory 2010-06-05
  • 打赏
  • 举报
回复
需要自定义自己的Provider,用户管理从MembershipProvider派生,角色管理类从RoleProvider类派生,你可以参考MySql提供的用户管理及角色管理Provider,网上有源码,搜一下就能找到。另外MSDN中也有详细的介绍

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧