python django集成cas验证系统


Posted in Python onJuly 14, 2014

加入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)),
)

更没有什么东西了,一看都懂的。

测试

我们先登陆下看看:

python django集成cas验证系统

可以看的很明显在访问我们的服务器之后,由于未登陆,所以接着302跳转到
cas服务器进行校验。

python django集成cas验证系统

这个图是紧接着上一个图的,在cas服务器校验之后,如果校验通过,则跳转会我们的
服务器地址,这里似乎是默认跳转回到了/,而我们在/对应的views里面打印了两行
字符,看到确实打印了login in ,则表示我们的登陆是成功的!

注销等其他也都类型,不再多说了。

总结

django_cas 总体的来说还是很方便的,可以非常快速的帮我接入cas验证系统,但

目前的配置似乎还是有点问题的,注销之后再次登陆是无法跳转回我们的服务器地址的,

而是跳转回了cas的地址。 有待继续验证哈。

Python 相关文章推荐
Python列表推导式的使用方法
Nov 21 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
详解Python之unittest单元测试代码
Jan 24 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Pandas把dataframe或series转换成list的方法
Jun 14 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
python 下划线的多种应用场景总结
May 12 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 #Python
用python + openpyxl处理excel2007文档思路以及心得
Jul 14 #Python
Python库urllib与urllib2主要区别分析
Jul 13 #Python
Python文件夹与文件的操作实现代码
Jul 13 #Python
分享15个最受欢迎的Python开源框架
Jul 13 #Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 #Python
Python文件操作类操作实例详解
Jul 11 #Python
You might like
php+mysql分页代码详解
2008/03/27 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python之循环结构
2019/01/15 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
Python交互式图形编程的实现
2019/07/25 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
如何选择使用结构还是类
2014/05/30 面试题
护士找工作求职信
2014/07/02 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
部门2014年度工作总结
2014/11/12 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电