我有一个没有认证的pet(测试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',
#) 发布于 2019-06-26 09:27:27
代码中有错误,
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',
)现在会成功的..。
发布于 2019-06-19 18:22:40
没关系,没有它我的工作也很顺利。我也在遵循这一指南。继续http://127.0.0.1:8000/o/applications。
顺便说一下,我还在对ALLOWED_HOSTS = ['0.0.0.0']进行注释,在用户/views.py上,我将所有的http://0.0.0.0:8000更改为http://127.0.0.1:8000。
现在我得到了这些:
{
"access_token": "C2qukd1zWz9aGSp652qbnpYjoT6ZRx",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "UoI0r9J09F3kcXGO1q3KsYoGHQ9DBw"
}https://stackoverflow.com/questions/56363885
复制相似问题