我已经了解 ASP.NET MVC 中基于用户和角色的安全性。但现在我需要一些更细粒度的东西。
假设我有一个文档列表,其中一些用户已获得授权,另一些则没有。每个文档在数据库的文档表中都有对应的记录。如果用户具有安全访问权限,则可以下载文档以供查看。如果您有该角色,也可以添加文档。每个文档都有一个 URL,每个文档列表都有一个 URL。
我想对列表进行安全修剪,以便用户只能看到他被授权的那些文档。但我还需要验证这些列表和文档的 URL 请求,因为没有什么可以阻止用户为他们不再有权访问的文档添加书签,或者只是在浏览器中键入 URL。
内置的基于角色的安全模型是否适合于此,或者我是否需要创建单独的、基于表的安全性?我可以将安全性放入我的存储库中,以便返回的记录已经被修剪,还是应该成为控制器的一部分?我是否需要一个安全属性来验证控制器请求,或者我应该将其作为前几行代码放入控制器方法中?
@罗伯特,我认为当你说你应该在它们到达视图之前修剪它们时,你已经回答了你自己的问题。因此,在您的业务逻辑中,作为对存储库的偏好,您可能需要执行 lamda 来修剪多余的部分。
我认为我永远不会将任何记录返回到不允许用户查看的视图。为什么会增加风险和流量?
至于书签,我认为您需要执行一些业务逻辑,以防止它们在访问不再存在时转到该网址。
我认为控制器只是为页面提供数据服务,而不具有任何逻辑,因此我更喜欢使用业务层方法,因为它确实看起来是一种业务规则。
这可能不是您想要的,但除非有更好的方法,否则我会使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)