【问题标题】:Using an alternative authentication backend for Django admin为 Django 管理员使用替代身份验证后端
【发布时间】:2015-03-23 01:30:20
【问题描述】:

我在我的 Django 站点上使用 CAS 进行身份验证(通过 django-cas-ng)。如果我通过 CAS 登录然后访问管理站点,它可以正常工作,但如果我在未登录时访问管理站点,它会重定向到管理站点的登录表单,而不是 CAS 登录页面。如何让它重定向到 CAS 登录页面?

【问题讨论】:

标签: python django django-admin cas


【解决方案1】:

'django_cas_ng.middleware.CASMiddleware' 添加到您的 MIDDLEWARE_CLASSES 将自动将用户重定向到 CAS 登录页面,而不是 django 管理员登录表单。

例子:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django_cas_ng.middleware.CASMiddleware',
    ...
)

【讨论】:

    【解决方案2】:

    我最终处理这个问题的方法是继承 AdminSite 并覆盖 admin_viewloginlogoutadmin_view 现在不再将未经授权的用户重定向到管理界面的登录视图,而是将匿名用户重定向到 settings.LOGIN_URL,并为非员工的经过身份验证的用户引发 PermissionDeniedloginlogout 现在只是重定向到 settings.LOGIN_URLsettings.LOGOUT_URL

    我把我的代码放在on GitHub 上,并以django-admin-external-auth 的名义把它上传到PyPI,以防其他人需要解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多