为什么我的学校CAS服务器在认证后没有重定向到我的网站?

2 投票
1 回答
1509 浏览
提问于 2025-04-16 14:05

我正在尝试制作一个只有滑铁卢大学的学生才能使用的网站。这个网站使用CAS来进行身份验证。我开始使用django_cas这个包,基本上按照步骤来做。以下是我测试的内容:

重定向到CAS登录页面 - 成功

在CAS服务器上验证用户 - 成功

重定向回网站 - 失败

(更新:添加代码以澄清) 解决方案:

看起来我把CAS_SERVER_URL设置错了。 我学校的CAS服务器应该用https而不是http

cas_django需要稍微配置一下:

## in settings.py
   CAS_SERVER_URL = 'http://cas-dev.uwaterloo.ca/cas/'
   LOGIN_URL = '/accounts/login/'
   MIDDLEWARE_CLASSES = (
       'django.middleware.common.CommonMiddleware',
       'django.contrib.sessions.middleware.SessionMiddleware',
       'django.middleware.csrf.CsrfViewMiddleware',
       'django.contrib.auth.middleware.AuthenticationMiddleware',
       'django.contrib.messages.middleware.MessageMiddleware',
       'django_cas.middleware.CASMiddleware',
   )

   AUTHENTICATION_BACKENDS = (
       'django.contrib.auth.backends.ModelBackend',
       'django_cas.backends.CASBackend',
   )

## in urls.py
   (r'^accounts/login/$', 'django_cas.views.login'),
   (r'^accounts/logout/$', 'django_cas.views.logout'),

## in views.py
@login_required
def sample(request):
    return render_to_response('sample.html')

我得到了一个404错误:

请求的URL /cas/login/http://uwnetwork.shaon.ca/accounts/login/?next=%2Fsample%2F 在这个服务器上没有找到。

有没有人知道为什么重定向会失败?

1 个回答

0

你提供的信息不够,让别人很难给出有用的回答。

你可以试试以下几点:

  1. 确保你按照django_cas的说明正确设置了CAS_SERVER_URL。
  2. 和你的学校联系,确认CAS服务器是否允许重定向到你的应用程序。因为在用户成功登录后,会有一些用户信息传递给应用,所以有可能服务器只允许在.uwaterloo.ca这个域名下的网站进行用户认证。

撰写回答