django - 设置 django-oauth-toolkit 后无法访问管理面板
问题描述
我有一个没有身份验证的宠物 API(测试 API)。我正在尝试学习如何实现 oath2 以增加我的应用程序的安全性。
我想通过使用 API 的请求调用以及 Django 管理面板来访问我的应用程序的模型。
我正在关注本教程:https ://medium.com/@halfspring/guide-to-an-oauth2-api-with-django-6ba66a31d6d
设置:django-oauth-toolkit
教程说我应该将此代码添加到设置中:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
'oauth2_provider.backends.OAuth2Backend',
)
但是当我运行服务器并尝试访问 /admin 时,我得到:
ModuleNotFoundError at /admin/login/
No module named 'django.contrib.auth.backends.ModelBackendoauth2_provider'; 'django.contrib.auth.backends' is not a package
如果我评论:
# 'django.contrib.auth.backends.ModelBackendoauth2_provider';
我可以访问登录界面,但说我的用户名或密码错误(不是)。
评论这两行我可以毫无问题地访问管理面板:
#AUTHENTICATION_BACKENDS = (
# 'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
# 'oauth2_provider.backends.OAuth2Backend',
#)
解决方案
代码有错误,
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
'oauth2_provider.backends.OAuth2Backend',
)
(,)
后面缺少一个逗号,'django.contrib.auth.backends.ModelBackend'
因此它将两行都视为单行,正如您在错误中看到的那样。
所以你需要做的只是
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend', # To keep the Browsable API
'oauth2_provider.backends.OAuth2Backend',
)
现在它将起作用...
推荐阅读
- javascript - 如何使用 JQuery 中的自定义视频修剪器修剪本地视频?
- python - 如何从 xgboost pickle 模型中获取功能订单
- hangfire - Hangfire BackgroundJob.Enqueue 运行多次而不是只运行一次
- json - Json对象作为json日志中的字符串 - Spring Boot
- javascript - 用于在 html 的“选择”列表中添加图像的技巧
- authentication - 如何对 Blazor Web 应用程序和 api 进行身份验证?
- javascript - 图像未在 REACT 中危险地加载 SetInnerHTML
- python - 更新 JSONField() 中的键值
- java - Android Java 谷歌地图 TileOverLay “打开街道地图”
- java - 使用面临 IllegalStateException 的多个数据源时的 Spring 批处理问题:无法打开 JPA EntityManager 进行事务处理:已经值