【问题标题】:How can I view the claims of the current user in an ASP.NET Trace?如何在 ASP.NET 跟踪中查看当前用户的声明?
【发布时间】:2013-01-21 23:18:31
【问题描述】:

我正在尝试调试一个使用 .NET 4.5 版本的 WIF 来提供用户身份的 ASP.NET MVC 应用程序。由于这些声明是由特定于该用户的远程 STS 生成的,因此很难测试在开发环境中为给定用户接收了哪些声明。

我想要一种机制,让我能够在用户使用系统时通过查看他们的肩膀来查看他们的声明。我立即想到了 ASP.NET WebForms 跟踪系统作为跟踪信息的来源和显示它的便捷机制,但我不知道 ASP.NET MVC 中的等效项。

在使用测试仪进行调试时,是否有任何内置机制可以向我公开这些信息?

【问题讨论】:

  • 您是在询问如何将此诊断数据转储到屏幕上(即关于跟踪框架的 Q),还是您在询问如何获取要转储到屏幕上的值(即 Q关于访问 STS 值)?
  • 两者都有。声明仅在用户的上下文中有价值,对于我的情况,通过向他们所属的用户显示声明最容易完成。我可以编写一个定制视图并点击ClaimsPrincipal 来完成我需要的所有工作,但是是否有任何现有的管道可以以标准化的方式为我完成这项工作?

标签: asp.net asp.net-mvc-4 wif trace


【解决方案1】:

选项

Glimpse- 类似于网页表单中的 trage/trace.axd 类固醇。非常适合 MVC 应用程序,但几乎没有提供 Web 表单(尽管团队一直在承诺大事,但这是一个值得关注的领域)。

trace.axd - Trace.Write 输出应该出现在这里,我从未尝试在繁忙的服务器上运行它。访问 trace.axd 应该适用于 mcv 应用程序,不确定 inpage 跟踪是否适用于 mvc - 我猜不是,但我从未尝试过。

-- 我有时会将诊断信息转储到所有屏幕并将其放在页脚中,或者将其放在页脚中然后将文本设置为白底白字,这样我就可以指导用户如何查看它并复制它,但他们通常不会看到它。

System.Diagnostics TraceSource 和相关的类——它比 Trace.Write 更好,但如果你大量使用,它会有一些缺陷。不过,在某些情况下,您不能假设您最喜欢的跟踪/日志库将可用。如果我要使用它,我会编写一个自定义侦听器并将用户的诊断数据写入数据库或文件,文件的侦听器已经存在。

Log4Net——一个跟踪/日志框架。支持写入各种位置——控制台、数据库、文件等。与 System.Diagnostics 相比,设计缺陷更少,但不需要向您的应用程序添加更多依赖项。与 System.Diagnostics 使用相同 - 登录到文件或数据库并在那里检查您的用户 STS 值。

我从未有过使用 WIF 或 STS 的好运气,但我想漂亮地打印一个对象及其属性对于任何对象来说都是相同的。如果您需要知道如何从中提取特定信息,您可能需要单独发布 WIF/STS 问题。

【讨论】:

    【解决方案2】:

    嗯 - Trace.Write 数据在调试时显示在 VS 的输出窗口中。也许那已经足够好了。您还可以为 System.IdentityModel 跟踪源添加跟踪侦听器,以更深入地了解令牌/声明处理。

    【讨论】:

    • 恐怕还不够好。如果我的用户有 Visual Studio,我只需附加一个调试器。要求是查看用户输出中的信息,例如 ASP.NET WebForms 跟踪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多