我很困惑为什么在WebAPI中需要设置主体,因为每次调用都是完全无状态的。使用您登录的用户信息进行设置有什么好处和原因,因为每个呼叫都应该是完全无状态的?
我的印象是,一个登录用户正在获得服务器创建的令牌,这是每次调用时需要来回发送的密钥,直到用户决定注销或令牌过期?
public Product Get(int id)
{
string token = GetHeaderTokenSecurityAccess();
return DataLayer.GetProduct(token, id);
}
在这种情况下,"需要"设置IPrincipal的主要原因是什么?
Principal 是 。NET 的标识机制。
身份是一个包含所有层的概念,而不仅仅是 API 层。因此,下面的所有层都需要一种方法来访问当前调用方的标识,这是通过设置包含主体的线程本地存储上下文来实现的。