我想创建一个使用django管理员的应用,但允许通过谷歌(我的公司谷歌帐户)登录代替django默认的ModelAdmin。
目前,看起来social-app-django( google )是可行的方法,但在安装和设置项目后,我不清楚如何允许django管理员登录使用social-app-django身份验证。我试图像http://python-social-auth.readthedocs.io/en/latest/configuration/django.html中所述配置我的项目,但目前尚不清楚如何将其与django管理员集成。
我发现这个snippit(似乎已过时)并添加了它,但在我尝试转到/admin/
时获得了404:
找不到页面(404)请求方法:GET请求 网址:http://127.0.0.1:8000/accounts/login/?next=/admin/login/%3Fnext%3D/admin/ 使用telos.urls中定义的URLconf,Django尝试了这些URL 模式,按此顺序:^ login /(?P [^ /] +)/ $ [name ='begin'] ^完成/(?P [^ /] +)/ $ [name ='complete'] ^ disconnect /(?P [^ /] +)/ $ [name ='disconnect'] ^断开/(ΔP[^ /] +)/(ΔP[^ /] +)/ $ [name ='disconnect_individual'] ^ admin /当前路径, accounts / login /,与这些中的任何一个都不匹配。
如果我删除了snippit,/admin/
将重定向到/admin/login/
,登录尝试时会返回错误文本:
请输入员工帐户的正确用户名和密码。 请注意,这两个字段可能区分大小写。
除了configuration之外,我还在settings.py
添加了以下内容:
projects / models.py(MyUser)
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
pass
settings.py
# for identification of SOCIAL_AUTH_USER
# http://python-social-auth.readthedocs.io/en/latest/configuration/settings.html#user-model
SOCIAL_AUTH_USER_MODEL = 'projects.MyUser'
AUTH_USER_MODEL = 'projects.MyUser' # not sure if this is needed
有人可以指导我如何设置我的项目以允许我通过social-app-django( google )登录django管理员吗?
答案 0 :(得分:1)
Django Admin使用auth
contrib应用程序,因此任何身份验证过程都会触发与登录非管理员部分的用户相同的机制,如果定义了python-social-auth
后端,它将由AUTHENTICATION_BACKENDS
后端处理在Login with Google
设置中。
为了使其成功,您需要:
/login/google-oauth2
链接(链接到is_staff
)添加到登录表单。您可以通过添加admin/login.html模板或定义自定义AdminSite a = b;
,否则将禁止访问管理员。