Restful API开发中不同端的用户请求相同接口中的用户唯一标识判断


原文地址:Restful API开发中不同端的用户请求相同接口中的用户唯一标识判断

在Restful API开发过程中,系统用户分为admin和customer两个用户类型,并且数据库的表是分开的。我们要实现一个系统通知接口,然而两个不同的用户类型请求同一个通知详情接口的时候,使用同一个id会造成目标用户角色混淆。

前提如下:

//通知列表接口
/notifications
//通知详情接口
/notifications/{id}

在notifications/{id}接口中需要更新该用户是否已读该通知,其中是否属于该customer的通知是用customer_id和notification_id来做判断的。

问题:

如果admin请求该接口,那么拿到的当前用户的id是admin的id,如果直接更新该通知为已读,实际上是当前admin读了这条信息,而不是该customer。所以如果系统内不同的用户类型分表,则每个用户的唯一标识符都需要不一样,使用id做为用户标识符会遇到这样的用户标识符混淆的问题。

三种解决方案:

1.不同类型的用户,并且两种用户类型分表,请求同一个通知详情接口,则两种类型的用户标识符不能出现重复。否则会出现上面用户唯一标识符混淆的问题。

2.分端口,例如admin请求的通知详情为 /admin/notifications/{id},customer请求/customer/notifications接口。

3.新增/customer/{id}/notifications/{id},在该接口中更新该用户已读该通知。

4.可以在一个共同的中间件从不同的表中检查否是admin,是否是customer,方法内部可以根据是admin和customer角色来判断权限。如果是admin,则再检查接口权限,customer走的另一个权限检查流程。

评论

登录后评论

服务器优惠活动

Top