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