年薪20万Python工程师进阶(1):Django-第三方登录框架

第三方登陆

1.安装

pip install social-auth-app-django

2.配置

INSTALLED_APPS=(

...

'social_django',

...

)

3.数据生成,直接migrate,因为源码中的 makemigrtasion 生成的数据库迁移文件已经存在了。会生成5张socia表,不用管

./manage.pymigrate

4.配置中添加

下面是源码,google的第三方验证,不需要添加。

AUTHENTICATION_BACKENDS=(

'social_core.backends.open_id.OpenIdAuth',

'social_core.backends.google.GoogleOpenId',

'social_core.backends.google.GoogleOAuth2',

'social_core.backends.google.GoogleOAuth',

'social_core.backends.twitter.TwitterOAuth',

'social_core.backends.yahoo.YahooOpenId',

...

'django.contrib.auth.backends.ModelBackend',

)

这里是基于微博,QQ,微信的第三方验证

AUTHENTICATION_BACKENDS = (

    #自定义设置jwt验证登录时候,可以匹配手机和密码(jwt认证接口默认匹配密码和账户)

    'users.views.CustomBackend',

    #第三方认证登录配置,微博、微信、QQ

    'social_core.backends.weibo.WeiboOAuth2',

    'social_core.backends.qq.QQOAuth2',

    'social_core.backends.weixin.WeixinOAuth',

    'django.contrib.auth.backends.ModelBackend',

)

5.在urls.py中配置URL

urlpatterns = patterns(' ',

...

url(' ',include('social_django.urls', namespace='social'))

...

)

6.setting.py中配置

7.基础配置完后需要在setting.py中设置appkey和回调网站

源码:

SOCIAL_AUTH_TWITTER_KEY='foobar'

SOCIAL_AUTH_TWITTER_SECRET='bazqux'

我的配置:

#第三方登录设置appkey和secret,根据开发平台的不同而不同

SOCIAL_AUTH_WEIBO_KEY = '23xxxxxxx'  #微博

SOCIAL_AUTH_TWITTER_SECRET = '2c60B652xxxxcxxxxxxxxx'  #微博

SOCIAL_AUTH_QQ_KEY = 'foobar'  #QQ

SOCIAL_AUTH_QQ_SECRET = 'bazqux'  #QQ

SOCIAL_AUTH_WEIXIN_KEY = 'foobar'  #微信

SOCIAL_AUTH_WEIXIN_SECRET = 'bazqux'  #微信

8.成功登陆后跳转页面设置

#第三方登录成功后跳转页面,这里跳转的主页

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

最后:

    登录跳转后,会自动生成一个用户,和该第三方用户绑定。

    由于项目的不同,不会直接登录,因为第三方框架是将数据存在了session中,而我的项目是用JWT机制保存token来实现登录,所以后续需要修改源码的方法。

1.拷贝源码文件夹(social_core)到extra_apps

2.修改extra_apps/actions.py/def do_complete函数

先导入库

from rest_framework_jwt.serializers import jwt_encode_handler, jwt_payload_handler

然后修改def do_complete函数

###############    修改了这个  #############

# return backend.strategy.redirect(url)

response = backend.strategy.redirect(url)

#根据username生成token

payload = jwt_payload_handler(user)

response.set_cookie('name',user.name if user.name else user.username,max_age=24 * 60 * 60)  #一定要设置过期时间

response.set_cookie('token',jwt_encode_handler(payload))

return response


最后完成第三方用户登录


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容