我正在做一个项目,在这个项目中,我们正在加强我们网站的一个区域(模块)内的安全性。我们一共有5个模块,所有5个当前共享相同的自定义授权属性类,进行三次检查。
这5个模块的类当前由这个自定义授权属性来修饰,并检查了它们各自的角色(3/5模块有一个单独的角色,而另两个模块有多个角色,其中一个有4个,而我现在发布的模块有3个)。然而,随着我们在一个模块中加强安全性,它已经成为一个如何解决它的问题。我们正在改变的这个模块有三个角色(只读,用户,管理).
用户也是一个特例,因为它有一个辅助检查集,其中包括在最多2个其他列表中检查权限(始终检查两个列表中的一个,而另一个检查用于一个选择区域)。
我的问题是,由于这个安全性不在原始的自定义授权属性之外,并且依赖于这个模块,我是应该创建一个新的自定义授权属性,还是应该修改原始属性?
我最初的想法是删除这个模块的类级装饰,然后将其应用于每个方法。使用此路径可以更多地将新逻辑添加到当前的自定义授权属性中。
然而,这里有一个问题。为管理员和只读用户执行此操作很好,但问题在于用户的情况。用户必须进行二次检查,以确定他们是否对将要查看的特定记录具有权限。如果不允许,则允许它们像只读用户一样在那里进行编辑.
由于这个子句,我不太确定是否有一个私有方法来进行检查和自定义授权属性。
任何方向或想法都将不胜感激。谢谢。
发布于 2017-01-13 06:53:18
因此,经过仔细考虑后,我想出了以下解决方案。我没有添加到我所拥有的当前自定义授权属性中,因为这仅限于站点中的一个模块。
但是,我确实对用户可以访问的所有页面进行检查(不包括Post方法),以确定所有情况。
当用户是管理员时,他们可以获得修改访问权。如果它们是只读用户,则不允许它们修改访问权限.当它们是用户时,也会检查它们的权限,如果它们具有这些权限,则会给予它们修改访问权限。否则,它们将被视为只读用户。
我在会话中存储用户的角色和权限,以及如果他们有修改访问权限的话。如果找不到会话,我将返回并将它们添加回。如果用户的角色/权限在用户管理区域中被更新,我还会更新杀死这些会话。
另外,在修改某些内容的页面(Add/Edit/Delete)中,我添加了一个逻辑块,如果它们没有修改访问权限,它们将被引导到一个未经授权的访问页面。
到目前为止,这似乎进展顺利,到目前为止还没有出现任何问题。我更愿意在一个地方添加这个逻辑,比如类,但同时,我认为将它放在那里是不合适的,因为它只用于一个模块。谢谢。
https://stackoverflow.com/questions/41592237
复制相似问题