晕了,这样的权限怎么控制

lawbc 2011-08-16 09:45:21
假如系统有以资源,就说新闻吧,管理员可以添加,删除,修改新闻,无论是谁发布的都可以操作,因为管理员是有任意权限的用户,而用户A只能发布,只能删除自己发布的,只能修改自己发布,但可以查看全部的新闻。

我们一般就是在系统中判断当前用户是不是管理员,如果是就可以操作,如果不是,再判断是不是创建者,如果是就可以操作,否则就不能操作。

上面这种做法写的太死了,因为后面又可能加一个角色,这个角色的用户可以对新闻进行编辑,那又怎么办呢

请问这种权限如果不是写死在程序的话,怎么通过配置进行权限管理呢。
...全文
145 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqlcsharpholl7 2012-02-17
  • 打赏
  • 举报
回复
为什么要写死在程序中呢?
模块
新闻模块
新闻信息表(id, 新闻内容,标题,。。。。创建者,创建时间)
权限表(增删改等等);
人员具体权限(账号,权限信息,id,加一个字段判别是否可以删除自己的文章(0,1))
账号对应的是创建者,权限信息对应的是权限表,id对应的是新闻编号。
在发布新闻的时候,就可以写入到人员具体权限中。
先判断是不是他的新闻,在判断是否能修改,删除。
lawbc 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wxr0323 的回复:]
用户 -> group ->给group 分配权限

添加角色的时候 添加一个组就行了 然后把用户分配到组里面。

也可以更改组的权限。

简单的权限
[/Quote]

你还没有明白我的意思吧,这个权限不仅是那个组那个角色拥有的,而且还需要一个规则判断,那就是是不是创建者
比如用户A本身没有删除、修改的权限,但是因为他可以发布新闻,那么对于他发布的新闻就有删除、修改的权限了,其他人的新闻就不能被他删除、修改
lawbc 2011-08-16
  • 打赏
  • 举报
回复
大家应该还没有明白我的意思,不是谁有权限,可以给谁授权限的问题
这个是一个规则的问题,比如新闻的创建者,本身是没有修改、删除的权限的,但是这个新闻是他创建的
那么他就有了这个权限了,而且这个权限只针对他创建的那条新闻才有的,其他是没有的

楼上各位说的是粗的权限,就是谁有xx权限的问题,而我说的是谁在XX情况下有XX权限的问题

语言表达不佳,希望大家能明白
tomysea 2011-08-16
  • 打赏
  • 举报
回复
如楼上honkerhero所说,把权限细化,使权限粒度更细。

模块 操作
新闻模块 添加 修改 删除 查看 审核...

做法可采用honkerhero的二进制权限划分法

权限串 11111111
每一位代表一个操作权限,1表示有权限,0表示无权限

“请问这种权限如果不是写死在程序的话,怎么通过配置进行权限管理呢”
不要写死,把权限相关的数据都保存到数据库其它地方

honkerhero 2011-08-16
  • 打赏
  • 举报
回复
可以在用户拥有的页面后边加一整型列, 存储所有权限相或之后的值就可以了
threenewbee 2011-08-16
  • 打赏
  • 举报
回复
所以ASP.NET 已经有Membership/Role了。如果你连现成的东西都不愿意学习,就考虑自己怎么创造一个,那更困难了。
honkerhero 2011-08-16
  • 打赏
  • 举报
回复
二进制权限
[Flag]
enum Right
{
None = 0;
AddNew,
Edit,
Delete
....
...
}

可以通过二进制的运算符来计算当前用户所拥有的权限
子夜__ 2011-08-16
  • 打赏
  • 举报
回复
用户 -> group ->给group 分配权限

添加角色的时候 添加一个组就行了 然后把用户分配到组里面。

也可以更改组的权限。

简单的权限
phoebuswei 2011-08-16
  • 打赏
  • 举报
回复
新闻,用创建者id吧
登录人一头id吧
判断相等啊
登录人有权限属性吧,如果不是adm就上面的
————
写成一个类,所有要用到的都继承这个类

是这个意思吧

62,243

社区成员

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

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

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

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