django - 如何从 django-oauth-toolkit token 获取当前登录的用户?

标签 django oauth auth0 django-oauth

我正在使用 Django 和 django-oauth-toolkit 为 Auth0 构建一个通用的 OAuth2 Authorization Server。我计划使用 Django 服务器对多个不同服务的用户进行身份验证,使用 Auth0 作为中介。

我有一个在应用程序通过身份验证后调用的 View ,我需要该 View 返回当前登录用户的详细信息。

网址.py:

# Return current logged in user
(r'^user/current/?$',
 'my_app.views.current_user.get_user',
 {},
 'current_user'),

View /current_user.py:
import json
from django.http import HttpResponse
from oauth2_provider.decorators import protected_resource


@protected_resource()
def get_user(request):
    user = request.user
    return HttpResponse(
        json.dumps({
            'username': user.username, 
            'email': user.email}),
        content_type='application/json')
request.user 返回 AnonymousUser,而不是 token 所属的用户。

如何访问与 django-oauth-toolkit 颁发的 token 关联的 Django 用户?

最佳答案

事实证明,如果您加载了正确的中间件和身份验证后端,例如 says in the documentation , request.user 会返回正确的用户。

AUTHENTICATION_BACKENDS = (
'oauth2_provider.backends.OAuth2Backend',
# Uncomment following if you want to access the admin
#'django.contrib.auth.backends.ModelBackend'
'...',
)

MIDDLEWARE_CLASSES = (
    '...',
    # If you use SessionAuthenticationMiddleware, be sure it appears before OAuth2TokenMiddleware.
    # SessionAuthenticationMiddleware is NOT required for using django-oauth-toolkit.
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'oauth2_provider.middleware.OAuth2TokenMiddleware',
    '...',
)

关于django - 如何从 django-oauth-toolkit token 获取当前登录的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39906719/

相关文章:

java - 如何在 Spring Boot 中一起使用 auth0 和 swagger?

android - 在 Auth0 Lock for Android 中获取 403 disallowed user agent

django - 如何为 Django 安装电话号码

python - 编写可重用 View

angular - 如何在首次登录时要求和存储额外的用户配置文件数据?

Python Oauth2 - 使用谷歌登录

python - Django 1.5 管理中的自定义用户模型

javascript - 使用 Twilio JS 客户端 API 时出现 JWT token 过期问题

facebook - 使用 oAuth 登录,我应该存储/使用什么来识别用户?

angular - 此客户端应用程序未批准回调 URL。可以在您的应用程序设置中调整批准的回调 URL