gpt4 book ai didi

Django REST to React - 无需密码即可获取社交身份验证 token

转载 作者:行者123 更新时间:2023-12-04 13:03:37 25 4
gpt4 key购买 nike

我想将有关应用程序中当前经过身份验证的用户的信息传递给 React,该应用程序仅在后端使用社交身份验证(由 social_django 处理)。我的所有用户和用户 token 信息都存储在 django REST 中,为了访问 token ,我通常必须将 POST 请求发送到 rest_framework.authtoken 的获取_auth_token View 。我的 Django 根 urls.py 文件如下所示:

...
from rest_framework.authtoken.views import obtain_auth_token

urlpatterns = [
...
url(r'^obtain-auth-token/$', obtain_auth_token),
...
]

但是,为了实际获取与我的数据库中的用户关联的身份验证 token ,我需要在我的 POST 请求中提供用户名和密码。社交身份验证会在不分配任何密码的情况下自动创建新用户,那么如何获取这些 token ?

最佳答案

你有这个工作吗?如果没有,这就是我所做的。希望能帮助到你。

我的设置 :

  • Django 与 Postgres
  • 用于 REST API 实现的 Django Rest 框架
  • 用于社交身份验证的 Python 社交身份验证 (PSA)(目前使用 Google+ 库)
  • Reactjs 前端

  • 使用时 <a href="{% url 'social:begin' 'google-plus' %}">Login</a>对于登录,它转换为 /login/google-plus/ .这不仅获得了 acess_token,而且还在您的数据库中创建了一个“社交用户”。我在我的案例中使用了 oauth 2.0 客户端库,大致遵循 this在客户端获取包含所有详细信息的 google 用户对象的方法。我用 ajax 调用替换了上面链接中的表单,它更灵活,让我可以控制访问 token 和其他必要的信息。此处的 ajax 调用确保在数据库内的社交身份验证表中创建社交用户。
    <script type="text/javascript">

    gapi.load('auth2', function () {
    let auth2;

    auth2 = gapi.auth2.init({
    client_id: "YOUR CLIENT ID",
    scope: "profile",
    cookie_policy: 'single_host_origin'
    });

    auth2.then(function () {
    let button = document.getElementById("google-plus-button");

    auth2.attachClickHandler(button, {}, function (googleUser) {
    // Send access-token to backend to finish the authenticate
    // with your application

    let authResponse = googleUser.getAuthResponse();

    $.ajax({
    "type": "POST",
    "url": "/complete/google-plus/",
    "data": {
    "access_token": authResponse.access_token,
    "CSRF": "{% csrf_token %}"
    }
    }).then(function(data){
    console.log(data);
    // Your success code
    }).fail(function(error){
    console.log(error);
    });
    });
    });
    });
    </script>

    获取 access_tokens 后,您 可以将它们存储在浏览器本地存储中 直到用户退出。在注销时,您可以删除它们。

    对于我提到的设置,此方法对我来说效果很好。还有查询 /obtain-auth-token的问题用户名和密码根本不存在。

    肯定有兴趣知道是否有其他方法可以从 PSA django 访问社交身份验证 token 。干杯!

    关于Django REST to React - 无需密码即可获取社交身份验证 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45360176/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com