为Django admin使用备用身份验证后端

时间:2015-01-23 22:11:47

标签: python django django-admin cas

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

2 个答案:

答案 0 :(得分:2)

'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',
    ...
)

答案 1 :(得分:1)

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

我将我的代码用于on GitHub,并将其上传到PyPI,名称为django-admin-external-auth,以防其他人需要解决此问题。