自定义认证后台和QQ第三方登录
来源:互联网 发布:百纳科技源码 编辑:程序博客网 时间:2024/06/08 02:17
有很多网站的登录不但可以使用网站账号密码,还能用注册的邮箱和手机号进行登录,现在就用Django实现这个功能。
Django默认的认证方式是使用username和password字段进行认证的,我们可以加上一个通过email字段获取用户的认证后台来登录。一个认证后台就是一个实现了authentication和get_user方法的python类,首先在应用目录创建一个authenticate.py文件,编辑代码:
from dajngo.contrib.auth.models import Userclass EmailAuthenBackend(object): def authentication(self,username=None,password=None): try: user = User.objects.get(email=username) if user.check_password(password): return user except User.DoesNotExist:return None def get_user(self,user_id):try: return User.objects.get(pk=user_id)except User.DoesNotExist: return None
最后在settings.py设置:
AUTHENTICATION_BACKENDS=['django.contrib.auth.backends.ModelBackend',#默认的后台
'blog.authenticate.EmailAuthenBackend'#假设我们的应用名为blog]
注意,Django认证会对每个后台按顺序进行,例如在这里先在第一个后台查找,找到了就停止,没找到就接着查找下一个,直到查找完成为之,如果所有后台都查找不到才会弹出错误信息。
第三方登录
'social_django',
'social.apps.django_app.default'
]
更新数据库:python manage.py migrate
在认证后端AUTHENTICATION_BACKENDS添加qq认证:
AUTHENTICATION_BACKENDS=[
'social_core.backends.qq.QQOAuth2'
]
添加ID和KEY:
SOCIAL_AUTH_QQ_KEY='app_id'
SOCIAL_AUTH_QQ_SECRET='secret_key'
SOCIAL_AUTH_QQ_USER_OPENID_AS_USERNAME=True
在根路由添加URL:
urlpatterns = [
url('',include('social_django.urls',namespace='social'))
]
在需要登录的地方加入:
<a href='{% url 'social:begin' 'qq' %}'>QQ登录</a>
- 自定义认证后台和QQ第三方登录
- 第三方QQ登录和分享
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- 第三方qq登录
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- 第三方登录QQ
- QQ第三方登录
- qq第三方登录
- qq第三方登录
- 第三方QQ登录
- QQ第三方登录
- qq第三方登录
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- 错误集
- Echarts请求json数据实例
- LeetCode35. Search Insert Position
- IE浏览器下点击a标签有虚线框的问题
- 自定义认证后台和QQ第三方登录
- The requested resource is not available的解决方法
- 最长递增子序列问题,O(N*logN)实现
- 用git将项目代码上传到github
- 聚类算法
- HYSBZ3531-旅行
- 【译】深度学习中各种优化器简介
- Oracle 11g RAC SCAN ip的原理及配置
- GitHup学习总结