【问题标题】:Claims added in Controller not found in following ActionFilter在以下 ActionFilter 中找不到控制器中添加的声明
【发布时间】:2018-03-21 07:50:23
【问题描述】:

当我在

上的控制器中添加对身份的声明时
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);
    }
}

我错过了什么?

【问题讨论】:

  • 您的身份验证是否基于授权令牌?您是否在添加声明后更新令牌?
  • 向身份添加声明应该在登录之前
  • @WaelAbbas 有效的声明是在登录之前添加的,所以这可能是我犯的错误。

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


【解决方案1】:

确保在登录之前向身份添加声明。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 2017-03-17
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多