我有一个 ASP.NET 2.0 [还没有 ajax...] 网站,它将以编译的形式部署在多个客户网站上。通常,该站点将仅是 Intranet。一些客户信任他们所有的人,不关心限制对站点和/或页面功能的访问,其他人不信任任何人,只希望某些人和/或组能够查看某些页面、单击某些按钮等人。
我可以做一些本土解决方案,可能从数据库表驱动访问权限,但在我走这条路之前,我想我会问:对于这种情况,什么是好的解决方案?最好可以在 web.config 文件和/或数据库中完全控制,因为重建网站是不可能的(对于客户端,我不想一遍又一遍地为他们做)。Active Directory 集成将是一个奖励,但不是必需的(除非这更容易)。
作为一个起点,我认为网站中的每个页面/功能点都被赋予一个身份并与一个权限组相关联......
编辑:web.config 授权部分允许/拒绝按角色和用户访问是好的,但这只是问题的一半 - 另一半是控制对每个页面上的单个方法(按钮等)的访问。例如,一些用户可以查看 whatchamacallits,而其他用户则可以编辑、创建、删除或禁用/启用它们。所有这些按钮/链接/操作都在视图页面上......
[理想情况下,我会让禁用的按钮不可见,但这在这里并不重要]
编辑:到目前为止有一些很好的建议,但还没有完整的解决方案 - 仍然倾向于数据库驱动的解决方案......
- 安全权限需求属性会在按钮被点击时抛出异常,这不是一件友好的事情;我宁愿隐藏不允许用户使用的按钮
- LoginView 控件也很有趣,但需要多次复制大部分页面内容(每个角色一次),并且可能无法处理用户具有多个角色的情况 - 我不能假设角色是分层的,因为它们将由客户定义
编辑:平台是 Win2K/XP、Sql Server 2005、ASP.NET 2.0,不使用 AJAX