首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-allauth,JWT,Oauth

Django-allauth,JWT,Oauth
EN

Stack Overflow用户
提问于 2015-02-04 20:45:40
回答 3查看 2.8K关注 0票数 17

我有一个AngularJS单页应用程序,它使用基于Django Rest框架的Django后端API。该接口通过django-rest-framework-jwt进行保护。我想在服务器端使用django-allauth进行帐户管理和身份验证。

我只是在流程中遗漏了一个部分:如何将来自客户端的Oauth-Token转换为JWT-token?基本上,我想按照这里描述的基于python-social-authhttp://blog.wizer.fr/2013/11/angularjs-facebook-with-a-django-rest-api/来做。

所以我的问题是,如何通过django-allauth实现链接中的ObtainAuthToken类

EN

回答 3

Stack Overflow用户

发布于 2016-12-09 18:59:26

社交登录通常有两个登录流:客户端("Javascript SDK")和服务器端。如果您的服务器需要授权,那么通过服务器端流程通常要容易得多。这也是我认为的all-auth (而且你没有提到你使用的前端库,就像你提到的博客帖子一样)。

现在的挑战是从服务器向前端提供令牌。您可能会在初始化SPA的超文本标记语言中加载令牌,然后从Angular保存令牌客户端(cookie、localStorage等)。因此会话不会在刷新时丢失。

如果你不想让用户离开你的应用,你可以在一个新窗口中打开你的/accounts/login//accounts/signup/ url。在新窗口中,它们会授权您的应用程序,您的服务器会在返回时收到令牌。在那里,您必须使用generate a JWT token manually,并将其呈现到模板中,以便javascript可以访问它。使用弹出窗口中的js,您可以与打开弹出窗口的应用程序通信,并将令牌传递给它-参见此SO answer作为示例-这样它就可以保存它。

票数 2
EN

Stack Overflow用户

发布于 2016-05-04 18:56:39

我们在我工作的公司使用hello.js进行O-Auth。

  1. 在Python端提供填充程序,并在用户连接其社交帐户后获取刷新令牌和所需的任何其他数据。

  1. 我们通过Django将他们重定向到他们试图从OAuth提供商的页面访问的页面。

每个用户仍然有自己的电子邮件帐户,这是JWT所需的,但您可以假设他们的社交帐户范围内的任何电子邮件都是他们的电子邮件,然后使用django的功能创建新用户:User.objects.create(email=emailStringFromOauthData)等。

票数 1
EN

Stack Overflow用户

发布于 2017-03-06 21:49:30

Django-allauth提供了一些信号,让你可以连接到社交登录过程中。在您的情况下,我建议您订阅allauth.socialaccount.signals.pre_social_login信号。代码将如下所示:

代码语言:javascript
复制
from allauth.socialaccount.signals import pre_social_login

@receiver(pre_social_login)
def create_jwt_token(sender, request, sociallogin, **kwargs):
    # dig into the sociallogin object to find the new access token.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28321785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档