什么是Thread.CurrentPrincipal,它有什么作用?

时间:2016-01-22 19:36:50

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

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

1 个答案:

答案 0 :(得分:9)

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

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

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

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

从.NET 4.5开始,所有主要类都派生自ClaimsPrincipal,从而启用基于声明的身份验证。

<强>更新 这就是我的开发盒上的WindowsPrincipal: enter image description here