我在我的Django网站上使用CAS进行身份验证(通过django-cas-ng)。如果我通过CAS登录然后访问管理站点,它工作正常,但如果我在未登录时访问管理站点,它会重定向到管理站点的登录表单而不是CAS登录页面。如何让它重定向到CAS登录页面呢?
答案 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_view
,login
和logout
。 admin_view
现在不会将未经授权的用户重定向到管理界面的登录视图,而是将匿名用户重定向到settings.LOGIN_URL
,并为不是员工的经过身份验证的用户提升PermissionDenied
。 login
和logout
现在只需重定向到settings.LOGIN_URL
和settings.LOGOUT_URL
。
我将我的代码用于on GitHub,并将其上传到PyPI,名称为django-admin-external-auth
,以防其他人需要解决此问题。