我需要在我的 API 中允许模拟(“充当”)。因此,具有适当权限的用户可以像其他用户一样使用 API。我想知道这个领域是否采用了一些特定的策略?
我可以创建一个端点来开始和结束模拟。开始模拟可能涉及获取用户及其权限并将它们加载到当前请求的内存中,这很容易。后续请求呢?添加指示“模拟用户”的 HTTP 标头是不好的做法吗?如果该标头存在,使用它对后续请求进行身份验证?使用带有该 UserId 的 cookie 怎么样?或者附加信息?
将模拟用户分配给 Thread.CurrentPrincipal 是否有额外的好处(假设是 .NET impl)?当前的权限和角色实现是自定义的,本质上是使用一个位数组(尽管这在未来可以更改)。