如何在django-rest框架中通过我的另一个微服务来验证属于另一个数据库的用户



我是django的新手,需要创建两个具有独立数据库的微服务;

一个保存用户信息,另一个保存待办事项/任务信息。到目前为止,我已经创建了两个独立的项目,其中包含两个独立数据库

  1. 使用simplejwt身份验证对用户进行身份验证。(使用todo_auth数据库的todo_aauth项目(
  2. 显示特定于该用户的待办事项/任务信息。(使用todo数据库的todo项目(

我需要todo项目通过将令牌路由回todo_auth项目来验证令牌,然后我需要todo_aauth项目向todo项目发送响应。(通过指定端口(

我怎样才能做到这一点?非常感谢。

附言:我在同一台服务器上用不同的端口号运行两个django项目。

Simple JWT提供了一个verify路由,您可以将令牌传递到该路由,以验证该令牌是否由服务器签名并且未过期。

来自文件:

如果您希望允许API用户在不访问您的签名密钥的情况下验证HMAC-签名的令牌,您还可以包括Simple JWT的TokenVerifyView的路由:

from rest_framework_simplejwt.views import TokenVerifyView
urlpatterns = [
...
path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),
...
]

如果你想做一些其他逻辑,你应该只写一个正常的视图,使用提供的JWT身份验证,并让另一个转发请求中的令牌

# todo-project
class ToDoView(APIView):
def get(self, request):
auth = request.headers["authorization"]
response = requests.get(
"http://todo-auth.sevice.com/api/do-thing/", 
headers={
"Authorization": auth
}
)
if response.status_code = 200: 
do_something(response.json())
# todo-auth-service 
class DoThing(APIView):
authentication_classes = [JWTAuthentication]
def get(self, request):
...

https://stackoverflow.com/a/73813647/10590820这会奏效的。您只需要使用中间件来检查和验证另一个服务中的令牌。或者,您可以在第一个服务中创建一个API来相应地标识令牌。

最新更新