在Controller中添加的声明在以下ActionFilter中找不到

时间:2018-03-21 07:50:23

标签: c# asp.net-mvc asp.net-core claims-based-identity actionfilterattribute

当我在控制器上添加对身份的声明时

HttpContext.User.Identities.First(
    i => i.AuthenticationType == IdentityConstants.ApplicationScheme) 

Addclaim(new Claim(type, value))

并尝试从下一个请求的自定义actionfilterattribute中的ActionExecutingContext中检索该声明,为什么它不存在?我正在使用以下代码访问声明:

[AttributeUsage(AttributeTargets.Method)]
public class ClaimActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var claims = context.HttpContext.User.Claims;

        base.OnActionExecuting(context);
    }
}

我错过了什么?

2 个答案:

答案 0 :(得分:1)

确保在登录前向Identity添加声明。

答案 1 :(得分:0)

声明通过身份验证Cookie保留,因此只有在登录时才会“刷新”。如果您添加或更新声明,则需要在之后将用户注销。然后,您可以选择自动重新签名或强制他们手动重新进行身份验证。