【问题标题】:Retrieve web user's Identity outside of request scope在请求范围之外检索 Web 用户的身份
【发布时间】:2011-02-14 14:50:28
【问题描述】:

我有一个 ASP.NET 应用程序,它使用 nHibernate 的 IPreUpdateListener 记录审计报告。为了在监听器事件中设置当前用户,我使用了 System.Security.Principal.WindowsIdentity.GetCurrent()。这在我的机器上调试时效果很好,但是当我将它移动到登台服务器时,我得到的是 ASP.NET 进程凭据,而不是请求用户。

在 ASP.NET 页面中,我可以使用 Request.LogonUserIdentity(因为我使用的是集成身份验证,所以效果很好),但是如何直接引用此用户而无需将其直接传递给我的事件?我不想通过管道传递这些信息,因为它确实不属于中间事件/调用。

【问题讨论】:

    标签: asp.net iis integrated-security


    【解决方案1】:

    如果代码在 ASP.NET 上下文中执行,HttpContext.Current(静态)包含当前的 Http 上下文。您始终可以测试它是否为空。如果不为空,则可以得到HttpContext.Current.Request。

    但是,驻留在此请求上下文中的身份最终取决于网站(IIS、Cassini、IIS express 或自定义)如何处理身份。

    【讨论】:

    • 完美。我花了一分钟才意识到我必须在我的项目中添加对 System.Web 的引用,但现在一切正常!
    猜你喜欢
    • 2013-06-29
    • 2017-08-09
    • 2021-08-07
    • 2021-01-04
    • 2021-10-20
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多