用户被分配到一个或多个部门。更好的方法来检查用户访问Web API,服务层,DB
用户拥有一个或多个角色,例如读取自己的角色只能查看他/她的任务。 团队成员角色可以查看和编辑他人分配给他/她的部门中的任务。 具有角色的用户Admin可以查看和编辑系统中的所有任务。
由于未经授权的访问阻止和性能原因,我们希望将当前登录的用户ID一直传递到数据库,以便只能获取他/她有权访问的记录。
我们的系统设计是:
的Web API - >业务/服务层 - >库 - > DB
目前,我们正在通过用户ID从网页API服务层中的每个方法的地方例如检查用户是否具有角色团队成员(谁可以查看/编辑其他用户可以访问的部门中的任务) 并获取他有权访问的所有部门,然后进一步传递到存储库。
有没有更好的方法来避免在每个方法中传递用户ID? 上述设计中用于检查用户访问权的最佳位置是什么?
我们希望没有用户标识参数的方法能够在另一个应用程序中使用相同的类进行报告。
任何想法?
你可以传上来的帐户及其他相关信息的cookie,那么有一个处理检查帐户及其他信息基本服务。也可以使用Attributes作为一种干净的方式来检查一个呼叫是否被授权。作为上面相关服务方法的[ReadOwnRoleRequired]示例。目前无法提供代码示例,因此现在应留下评论。 – NPhillips
您刚刚提到“团队成员角色可以查看和编辑他/她所属部门内的其他任务”。那么我猜你必须通过用户ID才能获得相关记录!不是吗? –
@NPhillips:谢谢。但用户TeamMember可以访问其部门中其他用户的任务。我们不仅需要检查角色,还需要检查当前用户有权访问哪个部门,并将其传递给db以仅查询这些部门。 – Iffi