【发布时间】:2008-10-15 20:23:07
【问题描述】:
我希望确保用户可以通过“区域”访问 aspx 页面。例如,“财务”是一些用户不应访问的安全区域。
结果不应该涉及MVP,MVC,MVVM等模式。我正在寻找轻巧快速的东西。
为了使事情更容易,我有一个基类,每个 aspx 页面都从该基类派生。与给定用户 ID 的安全区域相比,检查每个页面的最简单/最佳方法是什么?
谢谢。
【问题讨论】:
我希望确保用户可以通过“区域”访问 aspx 页面。例如,“财务”是一些用户不应访问的安全区域。
结果不应该涉及MVP,MVC,MVVM等模式。我正在寻找轻巧快速的东西。
为了使事情更容易,我有一个基类,每个 aspx 页面都从该基类派生。与给定用户 ID 的安全区域相比,检查每个页面的最简单/最佳方法是什么?
谢谢。
【问题讨论】:
我已经使用了这个,它是否是最好的方法是非常值得怀疑的。我有一个从 Page 派生的类,称为 SecurePage。我通常在数据库中有一个交叉表,其中列出了对象(例如页面)以及有权访问该页面的组/用户。使用用户 ID 和对象名称(在本例中为页面名称,但可以是字段或其他)运行存储过程,它会返回该用户或用户所属的组是否具有访问权限。您可以在页面初始化期间检查这一点,如果不匹配,则 response.redirect 它们或您想做的任何事情。
【讨论】:
您基本上需要创建一个小的 ACL 实现。 (访问控制列表)。
创建一个 acl_roles 表,其中包含您的所有角色(管理员、会计、其他、访客)和其他内容。然后将它的 id 与您的用户表链接起来,这样每个用户都有一个 role_id。
然后定义一个 acl_resources 表,您可以在其中添加应用中的“区域”以及它们必须具有的访问权限的最低角色。
然后在每个脚本开始时简单地检查当前用户是否有足够的权限进入该区域。
还有更多细节,但这是基本思想。
【讨论】:
是的,使用表单或 Windows 身份验证。您可以根据经过身份验证的用户角色轻松锁定站点的不同部分。考虑使用locations。
【讨论】:
为什么不直接使用 .NET 中内置的表单身份验证等安全功能?这很容易。
【讨论】: