asp.net权限管理设计问题!!!!!!!

hanyise520 2010-07-20 01:15:18
用户表,权限表,角色表 ,用户角色关系表,角色权限关系表。

那对于一个页面 里面的 操作 权限怎么控制 ,比如说 审核 删除 修改等 。我只知道 权限表里 字段URL 访问页面的权限
...全文
5083 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
城市的谎言 2011-10-13
  • 打赏
  • 举报
回复
mark
songguoliang888 2010-12-20
  • 打赏
  • 举报
回复
其实循环一下就行了
even0220 2010-08-13
  • 打赏
  • 举报
回复
我也遇见个烦躁问题。

假设一个用户具有多个用户组的权限。

一个用户给予特殊用户组权限。
hanyise520 2010-07-23
  • 打赏
  • 举报
回复
哎,结贴了。谢谢大家
幻想的天涯 2010-07-22
  • 打赏
  • 举报
回复
帮 顶
hanyise520 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 wo_you_xie_shang_xin 的回复:]
写错了 这样

HTML code
若想求角色的或权限,即code1|code2|code3=(1111)|(0011)|(1010)=1111,即四种权限都有,所
以以相或规则求的是不同角色的并集的权限
[/Quote]
感谢你一直热心的回答问题,明天上班去试试。
地下室小红叔 2010-07-22
  • 打赏
  • 举报
回复
唉 这年头挣个分真不容易~ 楼主记得结帖啊 我去了……
w79841446 2010-07-22
  • 打赏
  • 举报
回复
C#2.0的特性MemberShip,自己研究下.
另外,顶1楼,我的用户权限类似与他.
同时还有判断用户是否重复登陆等.
yan267 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 hanyise520 的回复:]
手机上.好麻烦。楼上所说我了解.但是要给一个用户一个临时权限怎么办?给这个用户所属角色加个权限?那其它所属这个角色的用户也有了这个权限。那就乱套了
[/Quote]

如果有这个要求,可以建立一个新的用户组对应临时权限,更改该用户的用户组符合要求的权限,而非修改原用户的用户组。

保证一个用户组的权限是基本上固定和统一的。
地下室小红叔 2010-07-22
  • 打赏
  • 举报
回复
你这种是通过自己编程来实现权限控制细节 .net的Form认证是基于微软的一种安全机制(身份票据验证) 它配置起来相对繁琐 更侧重页面级别的权限控制 对微粒度的权限控制不见长 当然可以接合你的模式来用 也可以不用 按你的描述看你的权限粒度要求较细 个人觉得没必要再用Form认证
hanyise520 2010-07-22
  • 打赏
  • 举报
回复
现在既然用了PageBase 那 asp.net form窗体 身份验证 还用吗?
jhdxhj 2010-07-22
  • 打赏
  • 举报
回复
mark
hanyise520 2010-07-22
  • 打赏
  • 举报
回复
现在 设计到最后 ,发现好多问题啊, 循环 权限树 出来 好困难。分配 角色 权限 的时候 都不知道 怎么 更新数据库。
地下室小红叔 2010-07-21
  • 打赏
  • 举报
回复
写错了 这样
若想求角色的或权限,即code1|code2|code3=(1111)|(0011)|(1010)=1111,即四种权限都有,所
以以相或规则求的是不同角色的并集的权限
地下室小红叔 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hanyise520 的回复:]
引用 13 楼 wo_you_xie_shang_xin 的回复:
可以与或处理啊(与&或|计算) 具体看你是设计为权限相加还是相减的模式

这句话没理解到。目前就是 一个用户可以对多个角色。

像上图这种 有2条记录 要怎么 给 按钮赋值?
一条数据是一个对象。在 PageBase 的Onload里 就判断 该页面 用户有访问权限没。
如果有 就会返回 一条或多条,这个就要……
[/Quote]

你的设计和我说的在最初设计上有些差别 至少那个字符类型用bit更合适(1表示有权,0表示无权) 但可以以相同思路实现:

假设有3种角色都涉及rightID=1的权限,如下:
UInsert UDelete UUpdate UOutPut
RoleID=1,rightID=1 1 1 1 1
RoleID=2,rightID=1 0 0 1 1
RoleID=3,rightID=1 1 0 1 0

即RoleID分别为1,2,3的rightID为1的权限码分别为(二进制):code1=1111,code2=0011,code3=1010

若你想求角色的与权限,即code1&code2&code3=(1111)&(0011)&(1010)=0010,仅剩Update权限,
所以以相与规则是求的不同角色的交集的权限

若想求角色的或权限,即code1|code2|code3=(1111)&(0011)&(1010)=1111,即四种权限都有,所
以以相或规则求的是不同角色的并集的权限


具体依据哪种规则看你的需求,一般习惯上角色权限用并集

二进制的具体操作处理过程和结果判定也不难 这里就不缀余了

hanyise520 2010-07-21
  • 打赏
  • 举报
回复
手机上.好麻烦。楼上所说我了解.但是要给一个用户一个临时权限怎么办?给这个用户所属角色加个权限?那其它所属这个角色的用户也有了这个权限。那就乱套了
hanyise520 2010-07-21
  • 打赏
  • 举报
回复
手机上.好麻烦。楼上所说我了解.但是要给一个用户一个临时权限怎么办?给这个用户所属角色加个权限?那其它所属这个角色的用户也有了这个权限。那就乱套了
yan267 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 hanyise520 的回复:]
引用 12 楼 wo_you_xie_shang_xin 的回复:
引用 8 楼 hanyise520 的回复:
我觉得 1楼 和 4楼的 可行 ,但是 具体的 实现,我现在 感觉还很困难 。感觉还是要在每个页面 操作!!


哦 你的意思是集约代码?若要统一在一个位置处理可以按如下模式:

1 自定义一个继承自基类Page的页面基类(设为M)
2 在M中重写RaisePostBa……
[/Quote]


变灰的操作应该是后台做处理吧,前台JS做?

权限其实很简单的。

用户组和权限表。

权限表例如允许新闻的添加修改删除。

那么对应的用户组就可以操作。

一个用户最好只属于一个用户组,这样权限才不至于混乱。

例如系统管理员的权限一定包含新闻管理员的权限,这样就不需要属于两个用户组了
hanyise520 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wo_you_xie_shang_xin 的回复:]
可以与或处理啊(与&或|计算) 具体看你是设计为权限相加还是相减的模式
[/Quote]
这句话没理解到。目前就是 一个用户可以对多个角色。

像上图这种 有2条记录 要怎么 给 按钮赋值?
一条数据是一个对象。在 PageBase 的Onload里 就判断 该页面 用户有访问权限没。
如果有 就会返回 一条或多条,这个就要根据 角色来定了,如果是多个角色 就是多条。

roleRight = new RoleRights();
roleRight.UInsert = Convert.ToBoolean(ds.Tables[0].Rows[0]["UInsert"].ToString());
roleRight.UDelete = Convert.ToBoolean(ds.Tables[0].Rows[0]["UDelete"].ToString());
roleRight.UUpdate = Convert.ToBoolean(ds.Tables[0].Rows[0]["UUpdate"].ToString());
roleRight.UOutPut = Convert.ToBoolean(ds.Tables[0].Rows[0]["UOutPut"].ToString());
roleRight.UExamine = Convert.ToBoolean(ds.Tables[0].Rows[0]["UExamine"].ToString());


上图是把一条 赋值给 roleRights 对象 ,再在 页面上 得到 roleRights对象 取得 它的 Uinsert等等。
2条 我要怎么做?
hanyise520 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wo_you_xie_shang_xin 的回复:]
引用 8 楼 hanyise520 的回复:
我觉得 1楼 和 4楼的 可行 ,但是 具体的 实现,我现在 感觉还很困难 。感觉还是要在每个页面 操作!!


哦 你的意思是集约代码?若要统一在一个位置处理可以按如下模式:

1 自定义一个继承自基类Page的页面基类(设为M)
2 在M中重写RaisePostBackEvent 权限判定过程就在这里
3 某一需要进行权限验证的页面……
[/Quote]
谢谢,明白你的意思了,看来方法有很多。目前已经实现了对按钮的 变灰控制。
但是如果用户 禁止 JS 是不是会 失效??
加载更多回复(15)
本题且课程将一步步帮你完成基于ASP.NET固定资产管理系统设计开发实战的全过程。 本课程完整记录基于ASP.NET固定资产管理毕业设计的制作过程,帮助大学生学习毕业设计系统的实现过程。本课程为ASP.NET毕业设计设计全过程录像辅导,固定资产管理系统毕业设计基于ASP.NET,开发环境为Visual Studio 2015和SQL Server 2014设计完成,系统主能够实现用户权限的动态分配,系统主要包括部门管理、用户管理、固定资产管理、固定资产折旧管理、固定资产借出管理、固定资产报修管理、固定资产统计管理和固定资产报废管理八个模块ASP.NET固定资产管理系统源码在课程的最后章节中 如没有或需要最新源码请联系讲师该课程为成品讲解,不提供免费讲解、答疑和功能完善等,需要可付费。基于ASP.NET固定资产管理系统毕业设计的主要优势有以下几个方面:1、学习难度低,满足大多数应届毕业生和对编程了解程度较低人群的学习要求。2、界面友好性强,使用最新前端模板进行后台管理员界面设计。3、系统功能和工作量大,满足大多数院校的毕业设计要求4、实现固定资产业务和流程的管理5、实现多图表统计。6、全设计过程录像 本套课程售价为399元  不需要源码的同学可享受活动价格优惠学习视频教程, 如需获取源码,当所有活动折扣/会员满减等最终售价低于课程价格时,请额外补足差价

62,050

社区成员

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

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

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

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