您将如何审核 ASP.NET 成员资格表,同时记录哪些用户进行了更改?

2024-01-11

使用基于触发器的方法进行审计日志记录,我记录对数据库中的表所做的更改的历史记录。我使用的方法(使用静态 SQL Server 登录)记录哪个用户进行了更改,涉及在每个数据库连接开始时运行一个存储过程。触发器在记录审计行时使用此用户名。 (触发器由产品 OmniAudit 提供。)

但是,ASP.NET 成员资格表主要通过成员资格 API 进行访问。当会员 API 打开其数据库连接时,我需要传入当前用户的身份。我尝试对 MembershipProvider 进行子类化,但无法访问底层数据库连接。

看来这将是一个常见问题。有谁知道当 ASP.NET 会员建立数据库连接时我们可以访问任何钩子吗?


更新2:恐怕 AOP 前端看起来不太好 - 看看是否可以拦截您不拥有且未创建的对象上的静态方法? https://stackoverflow.com/questions/2912300/is-is-possible-to-intercept-a-constructor-on-a-class-you-do-not-own

正如评论中提到的,看起来最好的选择是使用提供程序工具包的提供程序实现并将您的挂钩连接到SqlConnectionHelper.GetConnection()

我使用工具包代码,多年来我已经对其进行了大量、可靠的清理,没有出现任何问题。如果您有兴趣,让我确认 4.0 并打包它。


Update:

好的,我想我更好地理解您的需求,请告诉我我是否正确:

您需要提供商正在使用的实际连接吗?

SqlMembershipProvider 使用辅助类,System.Web.DataAccess.SqlConnectionHolder,用于所有数据访问。

我还没有这样做,但根据我收集的信息,您可以使用 AOP 实现(例如 Castle DynamicProxy(或利用它的库之一))拦截调用来构建此对象,并在那里建立连接。

有经验的人可以证实还是否认这一点吗?


原答案:

无需从 SqlMembershipProvider 派生。只要进去拿你需要的东西就可以了。

string connectionString = 
   typeof(SqlMembershipProvider)
   .GetField("_sqlConnectionString",BindingFlags.NonPublic | BindingFlags.Instance)
   .GetValue(Membership.Provider);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您将如何审核 ASP.NET 成员资格表,同时记录哪些用户进行了更改? 的相关文章

  • 与简单的文件请求相比,您预计 Web 服务请求的响应时间开销是多少?

    我正在开发一个 asp net Web 服务应用程序 以向使用 jQuery ajax 发出请求的小部件提供 json 格式的数据 我一直在使用 FireBug Net 视图来检查数据请求需要多长时间 在我最初的原型中 我只是请求静态 js
  • 如何在服务器上保存用户凭据以在后台运行查询

    背景 我们有一个 ASP NET Silveright Web 应用程序 silverlight客户端显示用户 图形形式的特定数据 它从服务器请求数据 问题 由于服务器必须执行底层数据库查询 获取这些数据的成本很高 因此客户端必须等待 优化
  • 本地权威声明和外部提供商声明的混淆

    我正在创建一个简单的 WebApi 它允许用户与 Facebook 连接 当我从 facebook 获取 accessToken 时 我调用 RegisterExternal 创建 Asp Net Identity 记录并存储令牌中的声明
  • 如何检查浏览器的JavaScript是否启用

    我的应用程序依赖于 JavaScript 我想检查客户端浏览器的 JavaScript 是否启用 如果关闭则发出警报消息 其实有一个
  • 绑定 WebForms TextBox 上的千位分隔符的逗号

    我正在尝试如下格式化数据绑定值 但我不断得到一个空格作为千 位分隔符 即显示的文本始终是 12 340 00 而它应该是 12 340 00 我缺少什么
  • 检查 asp.net 文本框中的脚本

    我们希望阻止用户在文本框中输入 html 或 javascript 我们可以解析输入并检查尖括号 想知道是否有更好的方法来做到这一点 我发现用编码的尖括号替换尖括号可以解决大多数问题 这里有一个参考 http ha ckers org xs
  • 向客户报告模型状态和应用程序错误的推荐方法是什么?

    我想知道向浏览器报告将显示给用户的应用程序或模型状态错误的最佳实践是什么 你能抛出一个异常并在jquery post的错误处理程序中处理它吗 例如 考虑这个方法 HandlerErrorWithAjaxFilter HttpPost pub
  • 如何将Php源代码转换为Asp.net代码

    我正在我的博客上开发一个应用程序 我得到了 php 的源代码 我对 php 没有任何了解 这就是为什么我想将 Php 源代码转换为 Asp net 代码 请提供任何帮助 希望这可以帮助 PHP 到 ASP NET 1 x 迁移助手 http
  • qTip2 jquery 与 asp.net 文本框

    我怎样才能实现jquery插件qTip2http craigsworks com projects qtip2 http craigsworks com projects qtip2 与 asp net 文本框 鼠标悬停时的优雅工具提示
  • IIS应用程序池回收+quartz调度

    我正在 IIS 7 5 上运行一个 Web 应用程序 它需要偶尔回收 否则内存使用情况会失控 这是我正在研究的问题 当它回收时 它实际上不会运行 直到另一个请求到来 而quartz不会运行 有没有办法让IIS在回收应用程序池后立即自动启动1
  • ASP.NET 验证控件和 Javascript 确认框

    我有一个使用 NET 服务器端输入验证控件的页面 此页面还有一个 javascript 确认框 在提交表单时会触发该确认框 当前 当选择 提交 按钮时 会出现 javascript 确认框 一旦确认 就会触发 ASP NET 服务器端验证控
  • 如何在 Asp.NET MVC 中使用 RedirectToAction() 传递多个对象?

    我想使用redirectToAction 方法传递多个对象 下面是我重定向到的操作结果 public ActionResult GetEmployees Models Department department Models Categor
  • 如何在 asp.net C# 4.0 中调用异步方法?

    我知道 net 4 5 中有await async 关键字 可以轻松调用异步方法 我目前正在研究如何在 C 4 0 中进行异步调用 我想要的一个例子是在数据网格正在进行数据绑定的情况下进行异步调用 如果您能为我提供一些链接 我将非常感激 看
  • 哪些控件触发了 Page.IsValid = false?

    两件事情 是否可以通过 Jquery 设置 Page IsValid Is Valid 属性 以便我不必使用 aspx 验证器 据我了解 IsValid 属性是只读的 当验证器进入时 是否可以通过 Jquery 当然 找出哪些控件导致验证失
  • 如何从 Web 表单请求返回 HTTP 400 - 错误请求错误?

    这个主题几乎说明了一切 我有一个 EstateReport Web 表单 必须使用 EstateId 请求参数来调用 如果此参数不存在 我想返回适当的 HTTP 错误 如何返回 HTTP 错误 400 作为响应 切线 如果所需的参数不存在
  • 命名空间“Microsoft”中不存在类型或命名空间名称“AspNet”错误?

    I ve downloaded a website and in VS express open it through file gt open website When I press F5 to debug I get build er
  • 关于线程池最大线程数的说明

    我读了here http blogs msdn com b tmarq archive 2010 04 14 performing asynchronous work or tasks in asp net applications asp
  • 执行多个查询时如何保持连接打开?

    我正在使用多个查询从应用程序中的同一服务器提取数据 问题是每次有新查询时我都必须打开一个新连接 是否有可能 打开连接 运行查询 拉取结果 运行另一个查询 拉取另一个结果 运行最终查询 拉取另一个结果 关闭连接 尽管您可能还不知道 但您的做法
  • 在 .NET C# 项目中使用 PHP

    有谁知道是否可以 以及是否有任何复杂性 在 NET C 项目中使用 PHP 语言 我知道 VB 和 C 现在可以混合在解决方案中 所以我想知道 由于 IIS 现在能够运行 PHP 您是否可以将它们组合成一个单一的运行时 显然 提出这个问题的
  • 以编程方式在网格视图列上显示数据

    我有一个产品数量列表和一个网格视图 网格视图已经绑定到一些数据 但我想在网格视图的第三列显示产品数量列表 以下是如何将数据绑定到网格视图的代码 gvProduct DataSource distSPUItem gvProduct DataB

随机推荐