我可以在调用SignIn后使用OWIN修改ASP.NET身份中的声明吗?

Jos*_*osh 16 claims-based-identity owin asp.net-identity

SignIn调用后可以在控制器中检索和修改声明吗?这对我不起作用:

ClaimsIdentity i = (ClaimsIdentity)HttpContext.GetOwinContext().Authentication.User.Identity;
i.AddClaim(new Claim("type", "value"));
Run Code Online (Sandbox Code Playgroud)

我需要做的是:登录完成后,用户一直在做其他事情,他们发布一个表单,我需要在此时修改声明并将其重定向到另一个页面.我想知道这是不是因为PRG和饼干,或者只是身份,或者我缺乏知识?

更新:我实际上通过SignIn第二次调用来解决这个问题,这似乎有效,但我猜这有副作用,所以很高兴知道是否有办法修改这些无论如何.

Hao*_*ung 10

当您想要修改用户的声明时,调用SignIn正是您应该执行的操作.它基本上导致将ClaimsIdentity序列化为cookie,这就是为什么你会看到新的声明出现在后续请求中的原因.

  • 我想在用户成功登录之后调用SignIn会感到奇怪...只是语义.谢谢. (4认同)