加入cas的好处
cas是什么东西就不多说了,简而言之就是单点登陆系统,一处登陆,全网有权限的系统均可以访问.
一次登陆,多个系统互通
cas一般均放置在内网,加入cas验证则必须要求用户走vpn访问,提高安全性;
cas可和域控等系统结合,密码定时过期;
基本认证统一走cas控制,减去开帐号等麻烦事;
django 如何使用cas验证
django 的好处就是支持的包多,网上已经有大神做好的相关的app,直接下载、安装就可以了。
我们要做的就是下载、解压拷贝,略微配置下就可以跑了。
至于安装也是非常简单的,直接解压之后python setup.py install 就可以了。
官方链接:
django-cas
django-cas 如何配置
配置方法
至于配置,熟悉django的同学也都明白,django 是安装app来划分的,可扩展性非常强。
django-cas也是一个app,所以我们按照app的配置方法就配置就可以了。
* 在middleware_classes 中添加cas的配置:
‘django_cas.middleware.casmiddleware’
* 在authentication_backends 中添加cas的配置:
‘django_cas.backends.casbackend’
注意在django1.6 中默认是没有authenticationmiddleware 的配置项的,需要手动添加,
并添加该行配置:
‘django.contrib.auth.backends.modelbackend’,
* 配置cas_server_url: 该地址为cas验证服务器的地址,必须配置
完整配置如下
installed_apps = (
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
)
middleware_classes = (
‘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.middleware.casmiddleware’,
‘django.middleware.doc.xviewmiddleware’,
)
authentication_backends = (
‘django.contrib.auth.backends.modelbackend’,
‘django_cas.backends.casbackend’,
)
cas_server_url = ‘http://cas.oxxs.letv.cn:6789/cas/login’
实例
settings.py配置文件
如上配置
views文件
# create your views here.
from django.http import httpresponse
def login(request):
if request.user.is_authenticated():
return httpresponse(‘login in at port 9000’)
else:
return httpresponse(‘not login at port 9000’)
没啥可说的,只是简单的检测用户是否登陆,然后打印以行字符串。
urls文件
from django.conf.urls import patterns, include, url
from django.contrib import admin
from report_system import views
admin.autodiscover()
urlpatterns = patterns(”,
# examples:
# url(r’^$’, ‘report_system.views.home’, name=’home’),
# url(r’^blog/’, include(‘blog.urls’)),
url(r’^$’, views.login),
url(r’^login/$’, ‘django_cas.views.login’),
url(r’^logout/$’, ‘django_cas.views.logout’),
url(r’^admin/’, include(admin.site.urls)),
)
更没有什么东西了,一看都懂的。
测试
我们先登陆下看看:
可以看的很明显在访问我们的服务器之后,由于未登陆,所以接着302跳转到
cas服务器进行校验。
这个图是紧接着上一个图的,在cas服务器校验之后,如果校验通过,则跳转会我们的
服务器地址,这里似乎是默认跳转回到了/,而我们在/对应的views里面打印了两行
字符,看到确实打印了login in ,则表示我们的登陆是成功的!
注销等其他也都类型,不再多说了。
总结
django_cas 总体的来说还是很方便的,可以非常快速的帮我接入cas验证系统,但
目前的配置似乎还是有点问题的,注销之后再次登陆是无法跳转回我们的服务器地址的,
而是跳转回了cas的地址。 有待继续验证哈。