ASP.NET MVC 中基于文档的安全性

2023-11-24

我已经了解 ASP.NET MVC 中基于用户和角色的安全性。但现在我需要一些更细粒度的东西。

假设我有一个文档列表,其中一些用户已获得授权,另一些则没有。每个文档在数据库的文档表中都有对应的记录。如果用户具有安全访问权限,则可以下载文档以供查看。如果您有该角色,也可以添加文档。每个文档都有一个 URL,每个文档列表都有一个 URL。

我想对列表进行安全修剪,以便用户只能看到他被授权的那些文档。但我还需要验证这些列表和文档的 URL 请求,因为没有什么可以阻止用户为他们不再有权访问的文档添加书签,或者只是在浏览器中键入 URL。

内置的基于角色的安全模型是否适合于此,或者我是否需要创建单独的、基于表的安全性?我可以将安全性放入我的存储库中,以便返回的记录已经被修剪,还是应该成为控制器的一部分?我是否需要一个安全属性来验证控制器请求,或者我应该将其作为前几行代码放入控制器方法中?


@罗伯特,我认为当你说你应该在它们到达视图之前修剪它们时,你已经回答了你自己的问题。因此,在您的业务逻辑中,作为对存储库的偏好,您可能需要执行 lamda 来修剪多余的部分。

我认为我永远不会将任何记录返回到不允许用户查看的视图。为什么会增加风险和流量?

至于书签,我认为您需要执行一些业务逻辑,以防止它们在访问不再存在时转到该网址。

我认为控制器只是为页面提供数据服务,而不具有任何逻辑,因此我更喜欢使用业务层方法,因为它确实看起来是一种业务规则。

这可能不是您想要的,但除非有更好的方法,否则我会使用它。

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

ASP.NET MVC 中基于文档的安全性 的相关文章

  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • 必须打开存储才能执行此操作 - System.IO.Packaging.Package

    我正在使用 System IO Packaing Package 类来压缩文件 我的应用程序的多个实例可以同时运行 并读取和保存文件 当处理小文件时 一切似乎都很好 但是当涉及大文件时 如果应用程序的两个实例同时保存 我会收到一个异常 消息
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • Android NDK C++“wstring”支持

    我有用 C 编写的源代码 lib 现在我想在 Android NDK 项目 NDK 6 中编译并使用相同的源代码 lib 我能够编译大多数 C 文件 除了基于 std wstring 的功能 在 Application mk 中 当我指定时
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • 用 C# 制作 Vista 风格的应用程序

    我正在运行 Windows Vista 并且希望外观看起来像常规 Vista 程序 有没有关于如何构建 Vista 风格应用程序的真正好的教程 文章 我还想学习如何使用本机代码并将其转换为 C 如this http bartdesmet n
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • 使用scanf()时如何区分整数和字符

    我只是使用该功能scanf 代码如下 scanf d a printf d a 当我输入1时 它会像我想要的那样打印1 但即使我输入 1a 它也会像以前一样打印 1 当用户输入非整数时 例如 2 3 12ab 1 a 我想向用户显示 输入整
  • 在 GraphQL 服务器中实现访问控制的好模式是什么?

    背景 我有一组模型 包括用户和各种其他模型 其中一些模型包含对用户的引用 我公开这些模型 以便通过 GraphQL API 生成的查询Graffiti https github com RisingStack graffiti 由 Mong
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in

随机推荐

  • sqlite3_column_text 返回的数据在完成/关闭期间被损坏

    我不确定这里发生了什么 但我发现从 sqlite3 column text 返回的数据在 Finalize close sqlite 阶段被更改 rc not handled in this abbreviated code sqlite3
  • 在 Prolog 中使用差异列表的上下文无关语法如何运作?

    我正在阅读有关 Prolog 中上下文无关语法的教程 他们在页面底部提到使用差异列表在 Prolog 中实现上下文无关语法 其中包括以下代码块 s X Z np X Y vp Y Z np X Z det X Y n Y Z vp X Z
  • 使用 ggplot 库中的 geom_path

    我有12个变量 M1 M2 M12 我为此计算了某个统计量x df data frame model factor paste M 1 28 sep levels paste M 1 28 sep x runif 28 1 1 05 lev
  • ios中如何将数据存储到NSCache中?

    我对 NSCache 很陌生 我有一个 API 调用 它会产生多个对象 如何将这些对象存储在 NSCache 中 以便我不需要再次调用 API NSCache 中可以存储多少数据 NSCache 中存储数据是否有特定限制 请帮我 看一眼文档
  • 如何使用 jQuery 防止用户更改页面

    我有一个页面 其中包含通过 ajaxSubmit 提交的表单 因此 无需更改页面 我的目标是 当用户尝试更改页面 甚至关闭浏览器 时 我询问他是否真的想退出页面而不发送表单 正如 gmail 所做的那样 例如 Gmail 通过类似 wind
  • 属性错误:“响应”对象没有属性“文本”

    page requests get url tree html fromstring page text 在第 2 行我得到 AttributeError Response object has no attribute text 我已导入
  • 关于不可变字符串的改变id

    一些关于id类型的对象str 在Python 2 7中 让我困惑 这str类型是不可变的 所以我希望一旦创建它 它将始终具有相同的id 我相信我的表述不太好 所以我将发布一个输入和输出序列的示例 gt gt gt id so 1406141
  • 转义百分号 DB2 SQL

    我正在尝试选择连续包含四个百分号的数据 如何转义百分号以便我的 LIKE 条件起作用 Thanks Use 使用转义字符子句 select from tbl where fld like escape 这将搜索包含以下内容的所有记录 中的字
  • 从 .ttf 生成 .afm [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在使用这个库从 PHP 生成 pdf 文件 http www fpdf org 不过 我目前正忙着添加新字体 特别是从 ttf 字体文件生成 afm 文件的步骤 我正在按照此处的
  • 如何在 Android 中按定义的时间间隔运行可运行线程?

    我开发了一个应用程序 用于在 Android 模拟器屏幕中按定义的时间间隔显示一些文本 我正在使用Handler班级 这是我的代码片段 handler new Handler Runnable r new Runnable public v
  • 不使用 ATL 实现 COM IDispatch

    我正在编写一个 Excel RTD 服务器实现 但我陷入了实现的 coclass 的样板中IDispatch 我无法访问 ATL 但我正在使用 ActiveQt 尽管我也对如何在原始 C 或 C 中执行此操作感兴趣 如何正确实施IDispa
  • Python:使用打印命令避免换行[重复]

    这个问题在这里已经有答案了 当我使用print命令 它打印我想要的任何内容 然后转到不同的行 例如 print this should be print on the same line 应该返回 这应该在同一行 但相反返回 这应该是在同一
  • 仅当 URL 具有某些参数时才显示引导程序模式

    有没有办法使用 Bootstrap 的模态功能来评估参数的 URL 并自动打开模态 例如 访问该网站的 URL 的访问者 example com没有看到模态 他们只看到常规网站 访问者通过 URL 访问该网站example com offe
  • Python 编程 - numpy polyfit 说 NAN

    我编写的非常简单的代码遇到了一些问题 我有 4 组数据 想要使用 numpy polyfit 生成多项式最佳拟合线 使用 Polyfit 时 其中 3 个列表会产生数字 但使用 Polyfit 时 第三个数据集会产生 NAN 下面是代码和打
  • 如何按字符串过滤pandas数据框?

    我有一个 pandas 数据框 我想按列中的特定单词 测试 进行过滤 我试过 df df col str contains test 但它返回一个空数据框 仅包含列名称 对于输出 我正在寻找一个包含所有包含单词 test 的行的数据框 我能
  • 函数名两边的括号是什么意思?

    在我的项目源文件之一中 我找到了这个 C 函数定义 int foo int bar return foo bar 注意 旁边没有星号foo 所以它不是函数指针 或者是吗 递归调用发生了什么 在没有任何预处理器的情况下 foo的签名相当于 i
  • 在 Pandas 中,如何将字符串转换为以毫秒为单位的日期时间对象?

    我的数据框中有一列事件的时间戳 看起来像 2016 06 10 18 58 25 675 最后 3 位数字是毫秒 是否有一种有效的方法将此列转换为 Pandas 数据时间类型 当我尝试时 pd to datetime 2016 06 10
  • 使用@EmbeddedId和@MapsId会导致插入NULL(违反NOT NULL约束)

    使用以下代码 Embeddable public class EmployeeId implements Serializable Column name company id private Long companyId Column n
  • Node.js 通过 HTTPS 提供服务时会切断文件

    我正在尝试使用 Node js 提供一些 JavaScript 文件 但出于某种原因 这些文件在传输过程中被切断 代码 httpsServer http createServer function req res var path url
  • ASP.NET MVC 中基于文档的安全性

    我已经了解 ASP NET MVC 中基于用户和角色的安全性 但现在我需要一些更细粒度的东西 假设我有一个文档列表 其中一些用户已获得授权 另一些则没有 每个文档在数据库的文档表中都有对应的记录 如果用户具有安全访问权限 则可以下载文档以供