客户可配置的 ASP.NET 网站安全性,用于对页面和按钮访问进行细粒度控制

2023-12-08

我有一个 ASP.NET 2.0 [还没有 ajax] 网站,将以编译的形式部署在多个客户站点上。通常该站点仅是 Intranet。一些客户信任他们的所有人,并且不关心限制对网站和/或页面功能的访问,另一些客户不信任任何人,只希望某些人和/或组能够查看某些页面、单击某些按钮等等人。

我可以做一些自行开发的解决方案,可能会从数据库表中驱动访问权限,但在我走上这条路之前,我想我会问:对于这种情况,什么是好的解决方案?最好是可以在 web.config 文件和/或数据库中完全控制的网站,因为重建网站是不可能的(对于客户来说,我不想一遍又一遍地为他们做这件事)。 Active Directory 集成将是一个额外的好处,但不是必需的(除非那更容易)。

作为起点,我认为网站中的每个页面/功能点都会被赋予一个身份并与一个权限组相关联......

编辑:web.config 授权部分允许/拒绝按角色和用户访问是好的,但这只是问题的一半 - 另一半是控制对每个页面上的各个方法(按钮等)的访问。例如,某些用户可以查看内容,而其他用户则可以编辑、创建、删除或禁用/启用它们。所有这些按钮/链接/操作都在视图页面上......

[理想情况下,我会让禁用的按钮不可见,但这在这里并不重要]

编辑:到目前为止有一些好的建议,但还没有完整的解决方案 - 仍然倾向于数据库驱动的解决方案......

  • 安全权限需求属性在点击按钮时会抛出异常,这不是一件友好的事情;我宁愿隐藏不允许用户使用的按钮
  • LoginView 控件也很有趣,但需要多次复制大部分页面内容(每个角色一次),并且可能无法处理用户处于多个角色的情况 - 我不能假设这些角色是分层的,因为它们由客户定义

编辑:平台是Win2K/XP、Sql Server 2005、ASP.NET 2.0,不使用AJAX


我认为您需要在这里做的是在业务对象或控制器中实现一组权限查询方法。示例:CanRead()、CanEdit()、CanDelete()

当页面呈现时,它需要查询业务对象并确定用户授权的功能,并根据此信息启用或禁用功能。业务对象又可以使用角色或其他数据库查询来确定活动用户的权限。

我想不出一种方法来以声明方式集中定义这些权限。它们需要被分发到功能的实现中。但是,如果您想改进设计,可以使用依赖项注入将授权者插入到业务对象中,从而保持实现分离。

Rocky Lhotka 的书中有一些使用此模型的代码。新版本还没上线Google yet.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

客户可配置的 ASP.NET 网站安全性,用于对页面和按钮访问进行细粒度控制 的相关文章

  • 我应该在学习 ASP.NET 和 Sharepoint 之前学习 .NET 和 C# 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是 Unix 和 Linux 的资深用户 在这些技术方面分别拥有大约 30 年和 14 年的经验 但为了扩展我的工具箱 我正在寻找有关学习 S
  • Java安全框架

    在新项目中 安全性总是排在最后 或者您使用像 Spring 这样的框架 其中安全性已经内置并且可以轻松切换 我试图找到一个可以插入 Swing 和 Web 应用程序 以及 JavaFX 的开放安全框架 也许很容易理解 我研究了普通的 JAA
  • 将 XML 文件导入 SQL Server(不使用 BULK)

    我正在尝试将数据从 XML 文件导入到数据库中 我使用了一个测试脚本BULK INSERT 但是当我在实时数据库上进行测试时 权限BULK被禁用 尝试 1 BULK INSERT XMLTable FROM C Radu test xml
  • SQL 用逗号替换点

    我有以下代码 SELECT cast Listenpreis 1 19 as decimal 29 2 as Listenpreis FROM SL M03KNE dbo ARKALK 我得到这个值 5 59 我尝试将点替换为 komma
  • 我可以指定自定义位置来在 ASP.NET MVC 中“搜索视图”吗?

    我的 mvc 项目有以下布局 Controllers Demo 演示 DemoArea1Controller 演示 DemoArea2Controller etc Views Demo 演示 DemoArea1 Index aspx 演示
  • 在 ASP.Net 查看页面中访问全局 .resx 文件

    我目前正在使用 Net 框架 3 5 版本进行构建 并且我有一个资源 resx 文件 我正在尝试在 Web 应用程序中访问该文件 我已将 resx 属性公开为公共访问修饰符 并且能够在控制器文件或 Web 应用程序中的其他 cs 文件中访问
  • 数据流任务的 Foreach 循环容器

    我想从 Oracle DB 导入近 1200 万条记录 但由于 SSIS 内存缓冲区问题 我需要每年迭代我的数据流任务 即 2005 年到 2012 年 7 次 我如何使用 foreach 我的 oracle 查询来获取每年的数据 Quer
  • INSERT INTO 存储过程的输出

    我正在编写一个存储过程 首先在表中插入一个新行 然后 另一个查询需要此查询生成的 ID 是否可以使用 OUTPUT 访问预先生成的 ID 这就是我到目前为止所做的 这几乎是一个猜测 但没有成功 ALTER PROCEDURE dbo add
  • End using 是否关闭打开的 SQL 连接

    如果我将 SQLConnection 包装在 using 中 我应该关闭它还是最终 using 处理它 using cn as new system data sqlclient sqlconnection cn open do a bun
  • 浏览器安全错误:“由于安全违规,此页面无法显示”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在一家网络开发公司工作 我为我们的一些营销人员设计了一个页面 以便将自定义页脚添加到我们应用程序中的各个页面 在部署我们的产品供
  • 如何从CLASS(内部类)调用ASPX页面

    我想从类文件或类的内部函数调用或重定向 ASPX 页面 请帮助我或给出提示或 请编写从侧类或在侧类中调用或重定向 ASPX 页面的语句 您只需执行以下操作 HttpContext Current Response Redirect myPa
  • 如何在SQL Server数据库的所有表的所有列中搜索特定字符串?

    我们想要在拥有大约 120 个表的所有数据库中搜索一个字符串 即 Hello World 我们考虑过像 mysql dump 一样进行转储 但它以奇怪的 bak 格式出现 应在每个表的每一列中进行搜索 任何类型的脚本都可以做到这一点 或者这
  • 如何将反射权限添加到IIS或将其添加到web.config?

    我在用着文件助手 http www filehelpers com 用于读取 csv 文件 一切都很好 直到我从 VS 开发服务器切换到 IIS 我得到了 PolicyException 无法获取所需的权限 我用谷歌搜索发现我需要添加反射许
  • 以另一个用户身份执行存储过程

    我遇到以下问题 有一个用户 A 谁必须执行存储过程 spTest In spTest的身体 sp trace generateevent叫做 问题是sp trace generateevent需要更改跟踪权限 并且我不希望用户A拥有这些权限
  • 由于表扫描,表值参数的性能较低

    我有一个将参数传递给 SQL 过程的应用程序 其中一个参数是表值参数 其中包含要包含在 where 子句中的项目 因为当我将 TVP 连接到具有 200 万行的表时 表值参数没有附加任何统计信息 所以查询速度非常慢 我还有什么选择 同样 目
  • 如何在网页上显示进度条直到网页完全加载?

    我想在网页中显示进度条 加载弹出窗口 直到页面完全加载 我的网页很重 因为它包含一个 HTML 编辑器 这是一个基于 jQuery 的 HTML 编辑器 需要很多时间才能完全加载 在加载时 我希望在页面上显示一个进度条 该进度条将在整个页面
  • 通过 GroupPrincipal 查找用户

    在我的 Active Directory my domain 中 我有许多组 UserGrp1 UserGrp2 等 其中有许多用户 一个用户可以存在于多个组中 我目前的代码允许我使用 GroupPrincipal 类来查找组 然后从那里获
  • 使用实体框架的子查询

    我正在移植一个子系统NHibernate to 实体框架并希望了解将以下查询移植到的最佳方法EF var date DateTime Now It can be any day AccountBalanceByDate abbd null
  • Spring 格式错误的“成员”属性值

    我正在创建一个必须连接到活动目录的应用程序 我实际上在处理更新群组成员时遇到了问题 团体名称是 GG 协作 AgenceXXX 这是我的GroupRepository抛出异常的类代码 public void addMemberToGroup
  • 将多对多关系中的所有相关记录分组,SQL 图形连接组件

    希望我错过了一个简单的解决方案 我有两张桌子 其中包含一份公司列表 第二个包含出版商列表 两者之间的映射是多对多的 我想要做的是将表 A 中与表 B 中的发布商有任何关系的所有公司捆绑或分组 反之亦然 最终结果看起来像这样 GROUPID

随机推荐

  • 机器特定的 HttpWebResponse 超时

    我有一个非常奇怪的机器特定问题 在某些机器上 下面的代码可以工作 而在其他机器上 它会冻结 直到 GetResponse 调用引发超时异常 string url https myserver myimage png System Net S
  • 如何根据两列查找值(列值不唯一)

    这是我的数据 File1 Name School Age Weight Jack St John 15 Jack St Mary 14 Jack St Michael 12 Mary St John 16 Mary St Mary 12 M
  • 在闪亮的应用程序中使用bigrquery auth

    我想创建一个闪亮的应用程序 它利用 bigrquery 连接到 BigQuery API 并运行查询 我使用以下代码来执行查询 library bigrquery project lt PROJECT ID put your project
  • Google Sheet SUMIF 不是求和范围

    我试图根据行值大于 0 的条件对所有行求和 但是 该公式仅计算第一行并忽略范围的其余部分 我在另一个电子表格上遇到了这个问题 但我在一个新电子表格上隔离了这个问题 以便向您展示并提出问题 答案应该是 B1 5 美元 B2 15 美元 B3
  • 捕获 PyQt 中的任何异常

    我在 PyQt 中创建了一个 GUI 应用程序 我想与很多人分享 有时我会遇到意想不到的异常 并且我认为这是理所当然的 在每次异常之后我都会改进我的代码 并且它会变得越来越好 我使用记录器来记录这些异常 并使用 PyQt 静默异常的特殊钩子
  • 无法通过 Flutter 中的 API 调用呈现 DropdownMenu 中的数据

    我正在尝试在我的项目中创建一个下拉菜单 其中需要在列表中显示的数据源自 API 调用 其响应如下所示 但是 我收到以下错误消息 并且我不知道如何解决此问题 There should be exactly one item with Drop
  • 将 CString 转换为 CTime

    In 智能设备MFC应用 我已成功转换CTime to CString 现在我想把它转换回来 CString to CTime 我怎样才能做到这一点 Use COleDateTime ParseDateTime CString 然后将其转换
  • PrimeFaces 数据表滚动条位于所需位置

    当我添加新记录 在默认可视区域之外 并更新数据表时 我有一个包含 100 多条记录的可滚动数据表 数据表从记录 0 加载 而我需要前一个位置的数据表视图 我的数据表代码
  • App.xaml 的 EventSetter 上出现错误 CS1061

    我试图通过我的代码创建一个元素并为其关联一个样式 还关联其 EventSetter 该样式工作完美 但当我尝试运行该函数时它不起作用 App xaml
  • 窗函数的确定性排序顺序

    I ve a status表 我想获取最新的详细信息 Slno ID Status date 1 1 Pass 15 06 2015 11 11 00 this is inserted first 2 1 Fail 15 06 2015 1
  • 这是否需要显式同步?

    我有两个线程 我想确保我在 LinkedBlockingQueue 上正确执行同步 这是正确的吗 或者 messageToCommsQueue 上的显式同步不需要吗 宣言 private LinkedBlockingQueue
  • 使用 python 2.5 将 zip 文件下载到本地驱动器并将所有文件解压到目标文件夹

    我正在尝试将 zip 文件下载到本地驱动器并将所有文件提取到目标文件夹 所以我想出了解决方案 但它只是将文件从一个目录 下载 到另一个目录 但它不适用于下载文件 对于提取 我可以让它在 2 6 中工作 但不能在 2 5 中工作 因此 我绝对
  • 错误:“stod”未在此范围内声明

    我正在开发一个 C 项目 我需要将字符串转换为双精度数 但我不断收到错误 stod 未在此范围内声明 仓促答复将不胜感激 include
  • 使用react-native切换手电筒(世博会)

    我正在尝试从我的反应本机导出应用程序切换手电筒 这Plugin不起作用 因为我正在使用 expo flashMode 属性世博相机组件允许我在拍照时切换闪光灯 有没有办法以其他方式切换手电筒 解决了React Native Expo 项目中
  • 单元测试 typescript 指令模板 karma-jasmine,html 未定义

    最近 我开始使用 karma jasmine 对我的打字稿代码进行单元测试 在为服务和简单 指令创建并运行测试用例后 我为自定义指令创建了一个测试用例 该测试用例有一个控制器 正在注入一项服务 并使用 4 个作用域变量与外界通信 这是一个简
  • Google Apps 脚本 - 从 HTML 创建 PDF 时不显示图像

    我正在尝试编写一个脚本 该脚本将输出带有已输入表单的值的 PDF 在此 PDF 中 我想在页面顶部添加一个徽标 该徽标是 Google Drive 文件夹中的图像 基于这个问题 和其他 图像需要转换为 base64 然后添加到 HTML 我
  • 泛型类型的实例[重复]

    这个问题在这里已经有答案了 我的问题是这样的 为什么不能用 new T 实例化泛型类型 而用类 Class 的 newInstance 就可以呢 您需要使用反射 newInstance 因为在编译时 需要链接其构造函数的类是未知的 所以编译
  • 如何使用JavaScript函数重定向到Struts2中的另一个jsp页面

    我想在打开时使用 JavaScript 函数将 JSP 重定向到另一个页面BeforeLogin页 但我收到以下错误消息 找不到 Struts 调度程序 这通常是由于使用 Struts 标签而没有关联的过滤器造成的 Struts 标签仅在请
  • 如何将 eval() 函数与变量列表一起使用?

    我有一个字符串形式的函数列表 y x 3 x 2 y 2 17 2 functions in list 我有一个清单Sympy Symbol对象 基本上是变量 whos name属性对应于函数字符串中的变量名称 Symbol x Symbo
  • 客户可配置的 ASP.NET 网站安全性,用于对页面和按钮访问进行细粒度控制

    我有一个 ASP NET 2 0 还没有 ajax 网站 将以编译的形式部署在多个客户站点上 通常该站点仅是 Intranet 一些客户信任他们的所有人 并且不关心限制对网站和 或页面功能的访问 另一些客户不信任任何人 只希望某些人和 或组