python – django用户中的多个登录字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – django用户中的多个登录字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1518字,纯文字阅读大概需要3分钟。
内容图文
![python – django用户中的多个登录字段](/upload/InfoBanner/zyjiaocheng/819/5d2ec76808d2496aa8324922c46436b5.jpg)
使用Django用户时可能会以某种方式使用多个登录字段?
就像在Facebook,我们可以使用用户名,电子邮件和电话号码登录.
解决方法:
是的!您可以编写自己的身份验证后端,如本节所述:
https://docs.djangoproject.com/en/1.8/topics/auth/customizing/
我们假设您已创建了一个应用程序帐户/,您可以在其中扩展其他电话字段的用户模型.
在帐户内创建auth后端backends.py,并编写自己的身份验证逻辑.例如:
from account.models import UserProfile
from django.db.models import Q
class AuthBackend(object):
supports_object_permissions = True
supports_anonymous_user = False
supports_inactive_user = False
def get_user(self, user_id):
try:
return UserProfile.objects.get(pk=user_id)
except UserProfile.DoesNotExist:
return None
def authenticate(self, username, password):
try:
user = UserProfile.objects.get(
Q(username=username) | Q(email=username) | Q(phone=username)
)
except UserProfile.DoesNotExist:
return None
return user if user.check_password(password) else None
在项目的settings.py中添加自定义后端:
AUTHENTICATION_BACKENDS = ('account.backends.AuthBackend',)
然后通过在POST的用户名字段中传递用户名,电子邮件或电话进行身份验证.
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
else:
# Return a 'disabled account' error message
...
else:
# Return an 'invalid login' error message.
...
见:https://docs.djangoproject.com/fr/1.8/topics/auth/default/
内容总结
以上是互联网集市为您收集整理的python – django用户中的多个登录字段全部内容,希望文章能够帮你解决python – django用户中的多个登录字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。