在公司推广python的时候,发现一直没有一个好用的python版本的cas客户端,这样就不能和java平起平坐了,也就只能写点简单的脚本了。哎。。。
django_cas_ng的安装
# 这一步我简单说了,不是中单
- 官网下载包,记得最好用最新的呀
- python setup.py install
django的配置
# 修改setting.py的INSTALLED_APPS MIDDLEWARE
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"django_cas_ng",
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_cas_ng.middleware.CASMiddleware'
]
# 修改setting.py的 增加下面的配置
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'django_cas_ng.backends.CASBackend'
)
CAS_SERVER_URL = "" # 你的cas server的地址
CAS_CHECK_NEXT= lambda _: True
CAS_VERSION = '3'
CAS_CHECK_NEXT 这个要加上,不然会一直报
Non-local url is forbidden to be redirected to.
CAS_VERSION 这个要加上,并且最好用3 。不然不会执行退出操作
修改urls.py
# 增加下面的设置
from django.contrib import admin
from django.urls import path
import django_cas_ng.views
from . import views
urlpatterns = [
path('', views.index, name='index'), # 不是必须的
path('admin/', admin.site.urls), # 不是必须的
path('accounts/login', django_cas_ng.views.LoginView.as_view(), name='cas_ng_login'),
path('accounts/logout', django_cas_ng.views.LogoutView.as_view(), name='cas_ng_logout'),
]
创建对应的数据库表
python manage.py migrate
使用
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
return render(request, 'index.html')
else:
return HttpResponseRedirect('/accounts/login')
因为cas server 是另个一地址(IP + Port), 所以当python应用重定向到cas server时会发生跨域问题。这时候解决方法如下:
时间紧迫,先写到这里,有问题联系我就行, qq群 630300475