首页 > 解决方案 > 在 django 应用程序中全局存储 oauth2 访问令牌的最佳方法?

问题描述

我正在使用 django 作为与 oauth2-app 集成的项目的后端。我已经能够获得访问令牌,但我对如何存储它感到有点困惑。我希望它是秘密的,但是当管理员或其他用户从前端发出请求时,后端应该可以访问它=>然后到后端(加载外部应用程序访问令牌)=>然后到外部应用程序。

我已经尝试将它存储在管理员用户模型中,但是只有管理员可以访问它(除非我在每个请求中都获得管理员用户模型?似乎有点笨拙)

我也试过用 os.environ 存储它,但据我所知,这些在服务器重新启动时会被清除。

实现这一点的最佳方法是什么?

标签: pythondjangooauth-2.0

解决方案


Django all-auth 是一个很棒的包,可以为你做到这一点(https://django-allauth.readthedocs.io/en/latest/installation.html

只需像这样添加您的社交帐户提供商:

# Provider specific settings
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        # For each OAuth based provider, either add a ``SocialApp``
        # (``socialaccount`` app) containing the required client
        # credentials, or list them here:
        'APP': {
            'client_id': '123',
            'secret': '456',
            'key': ''
        }
    }
}

并将其网址添加到您的 urls.py

urlpatterns = [
    ...
    path('accounts/', include('allauth.urls')),
    ...
]

推荐阅读