问题标签 [current-principal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 async/await 设置 Thread.CurrentPrincipal
下面是我尝试在异步方法中将 Thread.CurrentPrincipal 设置为自定义 UserPrincipal 对象的简化版本,但自定义对象在离开等待后丢失,即使它仍在新的 threadID 10 上。
有没有办法在等待中更改 Thread.CurrentPrincipal 并稍后使用它而不传递或返回它?或者这是不安全的,不应该是异步的?我知道有线程更改,但认为 async/await 会为我处理同步。
asp.net - Thread.CurrentPrincipal 使用 OWIN 身份验证和 Web API 是否可靠?
在 MVC5 之前,我听说过/能够重现过去使用异步操作时 Thread.CurrentPrincipal 并不总是正确设置的问题。这是一篇讨论该问题的博客文章:http ://www.hanselman.com/blog/SystemThreadingThreadCurrentPrincipalVsSystemWebHttpContextCurrentUserOrWhyFormsAuthenticationCanBeSubtle.aspx
现在,我已经使用 .NET 4.5.2 上的 OWIN 中间件在一个新的 Web API 项目中设置了身份验证(使用令牌身份验证提供程序)。Web API 的控制器主要由调用另一个业务层程序集的异步操作组成。我想使用 ClaimsPrincipalPermission 属性来保护对该程序集方法的调用。此属性与检查访问权限的 ClaimsAuthorizationManager 一起使用。我假设在幕后这使用了 Thread.CurrentPrincipal,所以我怀疑我是否会遇到 Thread.CurrentPrincipal 与原始 Web API 调用者不匹配的问题。
我可能会遇到同样的问题吗?到目前为止,我还没有复制它,但我不相信这个问题实际上已经解决了。我认为我更有可能只是还无法重现仍然存在的问题。
参考:
c# - 通过 OWIN AuthenticationManager.SignIn 添加 ClaimsIdentity 不起作用
我确实创建AuthorizeAttribute
了应该处理 Jwt Bearer 令牌的自定义,然后创建ClaimsIdentity
. 但是当我再次发送请求时,无论如何我看不到授权用户,必须再次创建ClaimsIdentity
并再次添加用户CurrentPricipal
。我做错了什么?
c# - System.Threading.Thread.CurrentPrincipal 是否在所有用户之间共享?
我打算使用 currentprincipal 并且我搜索了该属性是 static ,所以它必须是共享的,实际上我需要它是不同的而不是共享的。当我编写一些代码时,我看到 2 个用户登录应用程序后 currentprincipal 不同,对吗,我可以确定属性不同吗?实际上我的用户登录到应用程序并通过 WCF 调用我的函数!如果我的解释不够,请让我澄清一下,谢谢
c# - IErrorHandler.ProvideFault 中的 CurrentPrincipal 是否为空?
我创建了一个 IErrorHandler 来处理 WCF 服务中的所有异常。问题是,一旦我使用 ProvideFault 方法,Thread.CurrentPrincipal 就为空?它在服务方法中设置得很好吗?
在 IAuthorizationPolicy.Evaluate 中根据 IncomingMessageHeader 设置评估上下文.Properties["Principal"]。
我怀疑 IErrorHandler.ProvideFault 是在另一个线程上执行的。
有什么方法可以将 Thread.CurrentPrincipal 的值传递给 IErrorHandler.ProvideFault?
iis - 使用 Thread.CurrentPrincipal 与 HttpContext.Current.User 的身份
我知道这个话题在这里可能有一些重复的问题,但我仍然感到困惑。我对Thread.CurrentPrincipal.Identity和 HttpContext.Current.User.Identity有一个非常奇怪的情况。
我有一个 userIdentity.cs 类,我依赖于从我的令牌中获取当前活动用户。最初我的应用程序是托管在 IIS 上的 2 个单独虚拟机上的 MVC 应用程序。我使用Thread.CurrentPrincipal.Identity从令牌声明中检索当前用户,我没有遇到任何问题。但是,我已经更新了代码以与内置的 SPA 应用程序兼容。更新后,Thread.CurrentPrincipal.Identity不再工作,所以我不得不做一个后备计划并调用HttpContext.Current.User.Identity来检索索赔。所以用户身份类更新为如下:
该解决方案在开发环境(在 MVC 和 SPA 上)上完美运行。
然而,在将此解决方案部署到生产环境后,MVC 托管在 2 个虚拟机上,同时拥有大量用户,索赔开始以错误的方式返回。用户 ID 搞砸了,返回了错误的数据。在调试它时,我无法重现该案例。当删除HttpContext.Current.User.Identity 作为 ClaimsIdentity作为后备解决方案时,事情就像一个魅力;
如果有人可以向我解释 Thread.CurrentPrincipal 和 Current.User 之间的主要区别,那就太好了。
另外,如何正确实现与 MVC 兼容的解决方案并响应 SPA 应用程序?
抱歉发了这么长的帖子,提前谢谢你,