使用:
-
Django 1.11
-
Python 3.6
-
在FE中使用JWT的DRF
据我所知,Django管理员使用会话和基本身份验证 .
到目前为止我做了什么:用AWS-Cognito替换了Django Admin身份验证登录页面:
-
用户转到
domain/admin/*
,重定向到AWS登录 -
成功登录后,用户被重定向到
redirect_uri
,导致Django视图 -
在视图中,我用令牌替换
code
-
我可以't navigate to any Admin page - I am trying to redirect, but that doesn'工作,因为我没有
login()
用户 -
Stuck - 我想将User与获取的令牌相关联,并对每个Admin页面请求进行身份验证,并在用户注销时删除令牌
接下来该怎么办?
-
当我将JWT与前端应用程序一起使用时,每个
request.META
都有HTTP_AUTHORIZATION
,并使用合适的后端 . -
我知道如何添加后端,并可能利用user.backend(我也将Cognito-JWT用于其他FE部分,因此已经为此编写了BE)
-
我需要找到一种方法来用提取的令牌替换Django Admin会话身份验证
谢谢!
编辑:
如果我 login()
用户,并将其设置为我已经可以导航到任何管理页面的模型后端 - 但使用我在登录用户时创建的会话 .
我想让用户设置为新的模型后端,使用令牌的身份验证(来自Django backend docs):
class MyBackend:
def authenticate(self, request, token=None):
# Check the token and return a user.
...
-
如何让不同的管理页面请求将令牌传递给身份验证?
-
我在哪里存储令牌? (我可以使用Django User模型创建一个1-1的
NewUserModel
,并在其中放置一个标记字段) -
我正在考虑编写一个中间件来捕获所有请求,并查看目标URL - 如果是Admin url,一旦我获取#2中提到的用户(由于DRF,用户在每个请求中),都会将令牌添加到
HTTP_AUTHORIZATION
编辑2
我的解决方案越来越像this stack solution,我想知道是否有其他选择,但这是我到目前为止所做的:
-
我创建了一个具有1-1用户字段和令牌字段的模型
-
当我正在获取/创建用户时,我还在上面#1的用户相关模型上保存令牌
-
我创建了一个中间件,它捕获
process_request
中的任何请求,并且可以访问该用户 . 当我从上面的#1访问用户的相关模型时,我可以在那里看到令牌 . -
我正在尝试在请求上设置
HTTP_AUTHORIZATION
标头,但还不能这样做(目前卡在这里) -
在我的后端,我正在查看传入的请求,并尝试获取
HTTP_AUTHORIZATION
- 还没有 .