这是我简单的控制器代码 . 我第一次在服务器上部署,第一个用户点击我的API . 没有索赔 . 但现在任何用户都会调用我的api,他总是获得声明,因此计数为1 .
我的问题是,为什么WebAPI会在所有用户中保留所有声明?
[RoutePrefix("api/User")]
public class stackoverflowController : ApiController
{
[Route("Info")]
public String GetUserInfo(string sid)
{
var requestContext = Request.GetRequestContext();
ClaimsPrincipal claimsPrincipal = requestContext.Principal as ClaimsPrincipal;
ClaimsIdentity identity = claimsPrincipal.Identity as ClaimsIdentity;
//int count = claimsPrincipal.Claims.Count(); //THIS ALWAYS RETURNS 1 AFTER FIRST CALL
//int count2 = identity.Claims.Count(); //THIS ALWAYS RETURNS 1 AFTER FIRST CALL
AddClaim(identity, new Claim("newClaimType", sid));
return "Hello World!";
}
private static void AddClaim(ClaimsIdentity identity, Claim claim)
{
Claim first = identity?.FindFirst(claim.Type);
if (first != null)
{
identity.TryRemoveClaim(first);
}
identity.AddClaim(claim);
}
}
附:不,我不想像这样重置Principal或Identity:var id = new ClaimsIdentity(claim,“CustomApiKeyAuth”); actionContext.RequestContext.Principal = new ClaimsPrincipal(id);
不,我不想在第一行中删除我自己的Principal或Identity .
附:这不回答我的问题Persisting claims across requests