【发布时间】:2017-01-11 13:28:15
【问题描述】:
我正在开展一个项目,我们正在加强我们网站某个区域(模块)内的安全性。我们共有 5 个模块,目前所有 5 个模块都共享同一个自定义授权属性类,该类执行三项检查。
- 您是否同意接受条款?是的,继续执行 2。不,您未经授权并被转到未经授权的页面。
- 您是该网站的会员吗?是的,继续执行 3。不,您未经授权并被转到未经授权的页面。
- 您的角色是否允许在此模块中使用?是的,继续。不,您未经授权并被扔到未经授权的页面。
当前 5 个模块的类由此自定义授权属性修饰,并检查了它们各自的角色(3/5 模块有一个单独的角色,而其他 2 个有多个,一个有 4 个,一个我现在发布关于有 3 个)。但是,随着我们在 1 个模块中加强安全性,如何去做就成了一个问题。我们正在更改的这个模块有 3 个角色(只读、用户、管理员)。
- 只读:听起来是这样。没有添加/编辑/删除权限。
- 用户:具有读取权限,可以添加/编辑/删除等待其他权限检查。
- 管理员:随你所愿。您可以添加/编辑/删除并进入仅限管理员的区域。
用户也是一个特殊情况,因为它有一组辅助检查,其中包括检查最多 2 个其他列表中的权限(始终检查两个列表中的一个,而另一个用于一个选择区域)。
我的问题是,由于这种安全性在原始自定义授权属性之外并且取决于这个模块,我应该创建一个新的自定义授权属性,还是应该修改原始属性?
我最初的想法是删除该模块的类范围装饰,并将其应用于每个方法。走这条路线更有助于将新逻辑添加到当前的自定义授权属性中。
但是,这里有一个问题。为管理员和只读用户执行此操作效果很好,但问题在于用户案例。用户必须进行二次检查以查看他们是否有权访问他们将要查看的特定记录。如果他们不这样做,他们可以像只读用户一样在那里,但不能编辑。
由于该条款,我有点不确定是否有一个私有方法来进行检查而不是自定义授权属性。
任何方向或想法将不胜感激。谢谢。
【问题讨论】:
标签: c# asp.net-mvc-4 custom-authentication