1

我正在尝试在项目中使用 oauth 进行身份验证和授权。我想使用客户端凭据授予类型,因为该项目是关于将由客户端应用程序使用的中间件/api。我已经创建了一个对应的client_id和client_secret。令牌生成正在工作,但是一旦我尝试使用生成的令牌对 api 端点发出请求,我就会被 django 转发到帐户/登录页面:

                    <td>http://127.0.0.1:8000/accounts/login/?next=/api/mp/</td>

我的设置是:

MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'oauth2_provider.middleware.OAuth2TokenMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',]

AUTHENTICATION_BACKENDS = (
'oauth2_provider.backends.OAuth2Backend',)

在我看来,这是我唯一功能的顶部:

@csrf_exempt @require_http_methods(['POST', 'GET']) @login_required() def getUserContext(request):

我真的不明白这个额外的身份验证是从哪里来的。我怎么能告诉 django 只使用 oauth 来查看视图。

4

1 回答 1

1

发布问题后发现答案很短。但是,一直遵循说明使用@login_required 的方法。但是,要使用的正确装饰器是:

@protected_resource()
于 2019-03-18T15:31:20.040 回答