python - 如何适当地勾勒出 django-duo-auth 的路径?
问题描述
我目前正致力于在我的 django 项目中实施 Duo 两因素身份验证。目前看起来 django-duo-auth 是最好的包。我安装了该软件包并阅读了他们自述文件中的基本说明:
https://github.com/Elmnir/django-duo-auth/blob/master/README.rst
然而,这导致我的项目不断重定向到“duo”的一个不存在的子目录,这就是我命名的路径。例如,我的应用程序在XX.XX.XX.XX:YYYY
Going to that url 中加载,自动将页面重定向到:
http://XX.XX.XX.XX:YYYY/duo/login/?next=/
或者,XX.XX.XX.XX:YYYY/admin
自动重定向到:
http://XX.XX.XX.XX:YYYY/duo/login/?next=/admin
这只会导致 django 的通用 base.htmlduo_auth_form.html
扩展
以下是一些相关代码的片段,尽管它与包的 README 建议没有太大区别
/urls.py
urlpatterns = [
...
path('admin/', admin.site.urls),
path('duo/', include('duo_auth.urls')),
]
/设置.py
INSTALLED_APPS = [
...
'duo_auth',
]
MIDDLEWARE = [
...
'duo_auth.middleware.DuoAuthMiddleware',
]
DUO_CONFIG = {
'DEFAULT': {
'HOST': '<api-host-url>',
'IKEY': '<integration_key>',
'AKEY': '<app_secret_key>',
'SKEY': '<secret_key>',
'FIRST_STAGE_BACKENDS': [
'django.contrib.auth.backends.ModelBackend',
]
}
}
与自述文件的唯一区别是示例中的轻微重定向,在该示例do_auth_form.html
中我扩展到模板的子目录,即{% extends "dir\base.html" %}
文件顶部。
看起来这个包是相当新的,并且没有很多论坛可以解决问题,所以我认为最好在这里提问。任何帮助,将不胜感激!
解决方案
我相信这实际上是django-duo-auth
按预期工作的包。中间件的工作方式是,在将其添加到您的项目后,将检查使用其中之一进行身份验证的任何经过身份验证的用户,FIRST_STAGE_BACKENDS
以查看他们是否也已通过 Duo 进行身份验证,如果没有,他们将被重定向到Duo 登录页面在duo/login/
并提示完成 Duo 身份验证,类似于 Django 的内置@login_required
装饰器如何将匿名用户重定向accounts/login/
到登录。
如果您有不想强制使用第二个因素的用户,我建议您创建一个ModelBackend
仅对这些用户进行身份验证的子类。类似于本期中描述的方法,但颠倒了逻辑:
推荐阅读
- android - 从 macOS 应用程序运行的脚本中的 adb 屏幕截图
- angular - 输入时出现 Angular ExpressionChangedAfterItHasBeenCheckedError。OpenLayers 地图
- javascript - Link 的“as”和“href”不兼容值错误的解决方法
- ietf-netconf - 获取 bbf(宽带论坛)yangs 的 RPC 请求
- r - 如何编写一个函数来测试一个正整数 n 是否可以写为两个平方整数之和,即 n = i^2 +j^2 with i; j 2 N>0
- opencv - 应用 RANSAC 后如何计算异常点和内点?
- c# - 在 Unity 中移动相机抖动
- ruby-on-rails - 如何在 Render 上对基于 Rails 的应用程序进行健康检查?
- reactjs - 清理 useEffect 的正确方法
- prestashop - 如何在 Prestashop 中创建子主题