如何在新用户登录时解除冻结模型中的标识属性



例如,我有一个模型,

public class OccupationType
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [JsonProperty("userId")]
    [ForeignKey("ApplicationUser")]
    public string UserId { get; set; }
    [JsonProperty("type")]
    public string Type { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
}

这将设置与ApplicationUser对象的多对 1 关系,这是我存储用户身份的地方。

我的控制器通常采用上述模型并保留传入的数据,例如:

public async Task<IHttpActionResult> Put(string id, OccupationType occupationtype)
{        
    // DO BUSINESS LOGIC
    return StatusCode(HttpStatusCode.NoContent);
}

而来自客户端的典型有效负载更像这样:

{
   UserId = "###-###-..."
   Type = "..."
}

没有ApplicationUser财产。但是,当此对象被初始化时,模型中将包含一个ApplicationUser对象。用户首次使用控制器时,ApplicationUser的标识是携带有权使用控制器操作的令牌的用户的身份。

这很好,直到我向其他用户发送另一个请求。然后,即使其他用户使用新令牌,ApplicationUser仍与第一个用户相同。

我很困惑。如何选择用户来自动填充ApplicationUser属性?为什么当使用新令牌发出请求时,它不知道新的主体?

MVC ModelBinder 可能会将发布的UserId绑定到occupationType.UserId。之后,根据该用户 ID 获取occupationType.ApplicationUser。持有者令牌与此无关。

所以我的赌注是客户端在第二个请求中发送相同的 UserId。

相关内容

  • 没有找到相关文章

最新更新