摘要:我需要根据url中查询字符串中存在的数据来授权页面,而不仅仅是页面名称。ASP.NET中基于数据的授权
背景:
比方说,我建立一个库库存系统。用户可以创建并分配给管理员或用户角色中的单个库。在同一个数据库中有数百个竞争库,因此确保一个库的用户无法查看来自其他库的库存是非常重要的。
现在我正在使用一个非常标准的ASP.NET设置:使用SqlMembershipProvider进行表单身份验证。使用SqlRoleProvider进行授权,通过web.config中的<authorization>
部分进行配置。使用SiteMap提供程序进行安全修整以隐藏未经授权的页面。
要控制库存信息泄漏,我手动检查每个库存查询的用户的关联库ID。它可以工作,但它很乏味,容易出错。一定有更好的方法。
问:
现在,用户必须在库中创建任意“收藏”的能力。 (例如,集合A具有书籍1,2,& 3)。管理员希望能够授予对各个集合的管理员/用户访问权限,而不仅仅是整个库。
因此,如果用户转到www.com/Book.aspx?BookId=1
,系统需要确保用户在显示页面之前拥有“Book 1”所在集合的权限。如果他们转到www.com/Reviews.aspx?ReviewId=23,我需要确保“审阅”适用于他们有权查看的集合中的图书。
1)我怎样才能以最标准的ASP.NET方式实现这一点?
在基本页面内手动检查?
自定义的HttpModule?
自定义角色提供程序?
我对如何存储管理员/用户权限不感兴趣,而是根据这些权限来确定如何/如何授权。 (关于如何执行任何这些例子都赞赏)
2)为了进一步复杂化,我还是想安全修整,以检查用户是否有任何集合或库管理权限和隐藏的管理员如果他没有的话。
+1用于格式化您的问题如此令人难以置信的好! – user279521 2010-08-31 14:17:12
@ user279521:谢谢:) – Greg 2010-08-31 14:17:52