仅将/ token /端点公开:Django oauth工具包

时间:2018-08-06 01:56:49

标签: django django-rest-framework django-oauth

我正在使用此插件,不需要任何用户创建应用程序,并且任何OAuth应用程序都只能由 superuser 添加。

我已将其包含在urlpatterns

path('auth/', include('oauth2_provider.urls', namespace='oauth2_provider')),

这会将所有urls公开,包括公开管理应用程序的要点

auth/ ^authorize/$ [name='authorize']
auth/ ^token/$ [name='token']
auth/ ^revoke_token/$ [name='revoke-token']
auth/ ^introspect/$ [name='introspect']
auth/ ^applications/$ [name='list']
auth/ ^applications/register/$ [name='register']
auth/ ^applications/(?P<pk>[\w-]+)/$ [name='detail']
auth/ ^applications/(?P<pk>[\w-]+)/delete/$ [name='delete']
auth/ ^applications/(?P<pk>[\w-]+)/update/$ [name='update']
auth/ ^authorized_tokens/$ [name='authorized-token-list']
auth/ ^authorized_tokens/(?P<pk>[\w-]+)/delete/$ [name='authorized-token-delete'] 

我只希望/token/端点为公众生成访问令牌并刷新令牌。

如何阻止其他端点公开并仅允许通过管理面板访问?

1 个答案:

答案 0 :(得分:2)

从您的url patterns中删除软件包urls.py,并将网址明确提到为

from oauth2_provider.views import TokenView

urlpatterns = [
    path('auth/', include('oauth2_provider.urls', namespace='oauth2_provider')), # remove this line
    path('auth/token/', TokenView.as_view(), name="token"),
]