我目前正在使用Django rest框架编写一个REST API,并使用oauth2进行身份验证(使用django-oauth-toolkit)。我对他们两个都很满意,做的正是我想要的。
不过,我有一点担心。我正在将我的应用程序传递到生产环境,并意识到/o/applications/ view可能有问题,每个人都可以访问它!我发现自己很惊讶没有看到任何关于它的文档,当我试图谷歌它。我错过什么了吗
一些想法,要么使一个自定义的视图,要求作为超级用户的身份验证(但这将是奇怪的,因为它会混合不同类型的身份验证,不是吗?),或将401或403视图的虚拟路由添加到/o/applications/。但我觉得这些听起来很古怪。难道没有官方的“最佳”解决方案吗?如果我是第一个遇到这个问题的人,我会感到非常惊讶,我一定错过了一些东西。
感谢提前!
3条答案
按热度按时间ruarlubt1#
仅使用基本URL:
authorize/
、token/
、revoke_token/
而不是像官方示例中那样使用所有URL:
vm0i2vca2#
找到解决方案了!
事实上,/o/application之所以可以访问,是因为我打开了一个超级管理员会话。
一切都很好,然后:)
xggvc2p63#
我遇到了同样的问题,这是非常令人沮丧的。我最终提出了一个公认的不太理想的解决方案,它涉及到为您希望保护普通用户的路由重新定义
oauth2_provider
的内置视图。1.在应用程序中创建一个名为
oauth
的新目录,并创建一个views.py
和urls.py
。1.在
views.py
中:a.创建两个新的mixin
StaffRequiredMixin
和ApplicationOwnerIsStaffMixin
。两者都要求user.is_staff
为True
。B.通过复制/粘贴重新定义
oauth2_provider.views.application.py
中的视图,并更新它们以使用新的mixin。1.在
urls.py
中:a.重新定义urlpatterns以匹配
oauth2_provider.urls.py
,并在新视图中替换所有基于application/
和authorized_tokens/
的路由。注意文件的最后两行。为了使所有其他路由可用于授权请求和授予令牌等。我们还需要为这里的用户提供default视图。
1.在您的主要应用程序配置中
urls.py
a.更新它以使用新的
oauth
路由和视图。B.如果你有
django_oauth_toolkit
例子中的那个,用这个替换它。