检索请求范围之外的 Web 用户身份
我有一个 ASP.NET 应用程序,它使用 nHibernate 的 IPreUpdateListener 记录审核报告。为了在侦听器事件中设置当前用户,我使用了 System.Security.Principal.WindowsIdentity.GetCurrent()。在我的计算机上进行调试时效果很好,但是当我将其移动到临时服务器时,我得到的是 ASP.NET 进程凭据,而不是请求用户。
在 ASP.NET 页面中,我可以使用 Request.LogonUserIdentity (由于我使用的是集成身份验证,因此工作正常),但是如何直接引用该用户,而不必将其直接传递给我的事件?我不想通过管道传递此信息,因为它确实不属于中间事件/调用。
I have an ASP.NET app that logs Audit reports using nHibernate's IPreUpdateListener. In order to set the current user in the Listener events, I was using System.Security.Principal.WindowsIdentity.GetCurrent(). This works fine when debugging on my machine, but when I move it to the staging server, I'm getting the ASP.NET process credentials, not the requesting user.
In the ASP.NET page, I can use Request.LogonUserIdentity (which works fine since I'm using integrated authentication), but how do I reference this user directly without having to pass it directly to my event? I don't want to have to pass this info through the pipeline because it really doesn't belong in the intermediate events/calls.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果代码在 ASP.NET 上下文中执行,则 HttpContext.Current(静态)包含当前 Http 上下文。您始终可以测试它是否为空。如果它不为空,您将能够获取
HttpContext.Current.Request
。但是,驻留在该请求上下文中的身份最终取决于网站(IIS、Cassini、IIS Express 或自定义)处理身份的方式。
If the code is executing in an ASP.NET context,
HttpContext.Current
(static) contains the current Http context. You can always test if it's null or not. If it's not null, you will be able to getHttpContext.Current.Request
.However, the identity that resides within this request context ultimately depends on how the web site (IIS, Cassini, IIS express, or custom) handles identity.