我的宁静API上的对象所有权存在一些问题, 它是使用.net core 2.0编写的,其身份验证过程遵循使用IdentityServer4进行OIDC隐式流程进行授权的过程,我正在使用我的自定义中间件,该中间件将角色和权限转换为声明身份,并由某些自定义授权策略提供程序进行了验证。 我还将SQL Server用作通过实体框架核心2访问的数据库。我遵循的是代码优先方法。
问题是某些资源具有所有者ID作为外键,这意味着只有其所有者和具有管理员角色的用户才能对其执行CRUD。 现在,我必须在这些控制器的每个操作中检查此所有权,这会使我的代码重复且肮脏,以从令牌中获取用户ID,然后将其用作每个操作的所有者ID,而且我还必须为非管理员用户创建一个流程真正的主人。
此问题的最佳实践是什么?