【发布时间】:2018-12-09 00:44:29
【问题描述】:
我正在编写一个聊天应用程序,注册用户可以在其中互相发送消息。
其中一个组件是基于 Django 的消息传递微服务,它具有用于发送和接收消息的 API。为简单起见,只有两个 URL:
# List all messages in Thread "thread_id"
GET /threads/<int:thread_id>/messages/?user_id=123
# Send a message as user "user_id" to Thread "thread_id"
POST /threads/<int:thread_id>/messages/?user_id=123
此服务仅在内部可见,因此不可能欺骗user_ids。
授权基于user_id,它作为查询参数传递给服务并按如下方式处理:
views.py:
class MessagesViewClass(django.views.View):
def get(request, thread_id):
# If this user is not part of this thread
user_id = request.GET.get('user_id')
if this_user_not_part_of_this_thread(user_id, thread_id):
raise Some403Exception()
else:
process_response_normally()
现在,我正在通过查询参数进行验证。有没有更传统或规范的方式来处理这种类型的授权?
【问题讨论】:
标签: python django microservices