【问题标题】:What is Thread.CurrentPrincipal, and what does it do?什么是 Thread.CurrentPrincipal,它有什么作用?
【发布时间】:2016-04-29 12:25:51
【问题描述】:

Thread.CurrentPrincipal 是做什么用的?它对应用程序的身份验证和授权有何帮助?是否有任何文章或资源可以帮助解释它的作用?

【问题讨论】:

    标签: asp.net security c#-4.0 iprincipal iidentity


    【解决方案1】:

    Thread.CurrentPrincipal 是 .NET 应用程序表示运行进程的用户或服务帐户身份的方式。

    它可以持有一个或多个身份,并允许应用程序通过IsInRole 方法检查主体是否在角色中。

    .NET 中的大多数身份验证库将验证用户的凭据并将 Thread 类上的此静态属性设置为新的主体对象。

    不同的线程可以有不同的主体,因为它们可能正在处理来自不同用户的请求(在 ASP.NET Web 应用程序中,HttpContext.User 被复制到 Thread.CurrentPrincipal 中以用于每个新请求)

    从 .NET 4.5 开始,所有主体类都派生自 ClaimsPrincipal,支持基于声明的身份验证。

    更新: 这是我的开发箱上的 WindowsPrincipal 的样子:

    【讨论】:

    • 假设如果用户使用 Windows 身份验证登录到应用程序。我们如何表示 Thread.CurrentPrincipal 。它包含的所有属性。
    • Thread.CurrentPrincipal 将填充一个 WindowsPrincipal 对象。它包含其他声明,例如 UPN 和主体所属的组。
    • 能否详细说明一下
    • 不确定您在寻找什么。我已经从我拼凑的一个 ASP.NET 应用程序中添加了一张 WindowsPrincipal 的图片。如果您在 Active Directory 域中有一台装有 Visual Studio 的机器,您可以自己轻松地进行试验。只需创建一个新的 ASP.NET MVC 应用并将身份验证更改为 Windows 身份验证。
    最近更新 更多