首页 新闻 会员 周边 捐助

asp.net 关于权限控制问题。

0
悬赏园豆:5 [已解决问题] 解决于 2014-07-11 16:11

这个问题困扰我很久,一直找不到比较好的解决方案,网络上搜索也不晓得该搜什么关键字。

在此我列一些场景

section 1:

数据按照部门管理,各部门只能管理自己的数据。

然后在编辑数据时是通过URL跳转到编辑页 xxxxEditPage.aspx?ID=xxx这种形式。

那么如果用户直接在地址栏 输入以上地址,并且参数ID 输入一个其他的,那么其岂不是可以编辑修改别人的数据。

关于这些  一般可以怎样限制?

(难道还需要在页面再对传过来的ID在做一次判断,是否在该用户可管理的范围内?)

类似删除等等操作。

俺不是肥熊猫的主页 俺不是肥熊猫 | 初学一级 | 园豆:18
提问于:2014-07-11 13:32
< >
分享
最佳答案
0

根据UserID进入的时候进行部门验证,非本部门的你当然不给它进入不就得了,要是限制跟人就非本人的不然进入就可以了

收获园豆:1
拾梦小侠ด้้้ | 小虾三级 |园豆:713 | 2014-07-11 15:34

这样也是说  必须在每个需要做处理的页面做判断了。。。

俺不是肥熊猫 | 园豆:18 (初学一级) | 2014-07-11 15:56

@俺不是肥熊猫: 写个统一的类处理就行了...每一个请求都通过这个类...在这个类做验证就可以了,正常的返回正常数据,不正常的拦截

拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2014-07-11 16:06
其他回答(5)
0

就是按照你说的“难道”这样进行限制。

B/S软件的一个重大原则就是,凡是终端用户可以修改的,都不能直接信任。

收获园豆:1
爱编程的大叔 | 园豆:30844 (高人七级) | 2014-07-11 13:36
0

1)給用戶加權限。

2)給ID參數加密/解密處理。

收获园豆:1
会飞的金鱼 | 园豆:881 (小虾三级) | 2014-07-11 13:42
0

在第一个页面用session保存权限。在第二个页面取出session中保存的权限。判断权限。

信涛哥94 | 园豆:206 (菜鸟二级) | 2014-07-11 13:52
0

首先对于数据的查询可以用GET方式请求服务器端。。而数据操作类的考虑到数据安全性考虑。。。请求方式应该用POST的方式会比较好,这样页面在请求的URL中就不会显示呈现ID=XXX这样的情况,其次关于权限的问题。。首先可以将用户的基础信息以对象的方式存放在Session里,然后再Attribute中做先关的逻辑验证。。类似代码写法如下:

[atrribute="XXX"]

public void funciton(){}

这样的针对atrribute的编程会让代码更OO

收获园豆:1
小孔妹妹 | 园豆:247 (菜鸟二级) | 2014-07-11 14:42

事实上 这样子和我所表述中(难道。。。) 所做的做法是差不多的。

也就是在每个页面都做一次判断

 

然后你所说的

[atrribute="XXX"]

public void funciton(){}

这个是啥。。。 可以列出些更详细点的资料么?

支持(0) 反对(0) 俺不是肥熊猫 | 园豆:18 (初学一级) | 2014-07-11 16:01

@俺不是肥熊猫: 关于C#的atrribute编程,http://www.cnblogs.com/luckboy/archive/2009/07/18/1526083.html你可以参考看下这个博文。。

支持(0) 反对(0) 小孔妹妹 | 园豆:247 (菜鸟二级) | 2014-07-11 17:16

@小孔妹妹: 关于权限的OO设计,具体的实现方法先不讨论。。。Session什么的都是寄存用户权限的手段,,你用static变量去存用户权限也没问题。。。重点是你的那个ID传值是什么概念。。我开始的理解是当这个ID是业务数据的ID,而不是用户ID,,从实体角度分析,数据的归属是属于数据实体的属性。。所以当你请求持久层的时候用户信息一般都会作为参数请求,,对于atrribute是控制当前方法是否对用户开放。。。你可以理解为是附加在请求方法上的类。。要先执行这个类才会执行方法,权限的设计大致你要从数据行级和列级的程度,,还有功能点的控制。。。

支持(0) 反对(0) 小孔妹妹 | 园豆:247 (菜鸟二级) | 2014-07-11 17:24
0

你可以把用户可管理权限的部门ID存到SESSION或者COOKIE里,而不是直接通过URL传参的方式

收获园豆:1
Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-11 14:57

编辑页将ID 存到Session有些奇怪。。。

支持(0) 反对(0) 俺不是肥熊猫 | 园豆:18 (初学一级) | 2014-07-11 15:59

@俺不是肥熊猫: 不是编辑页存,是编辑页去取,你不是有用户表么?用户表里是不是可以建个部门ID的字段呢,用户登录的时候就存这个字段的值存起来,编辑页去取这个值就可以了。

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-11 16:07

@Alex_QY1987: 抱歉。。。是我理解错了。

我以为你说的是将当前编辑数据的 ID存到 Session中。

 

非常感谢。

支持(0) 反对(0) 俺不是肥熊猫 | 园豆:18 (初学一级) | 2014-07-11 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册