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内置函数Type()函数一个有趣的用法
Feb 18 Python
python线程池(threadpool)模块使用笔记详解
Nov 17 Python
Python中GIL的使用详解
Oct 03 Python
对numpy中向量式三目运算符详解
Oct 31 Python
Python对列表的操作知识点详解
Aug 20 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
Python self用法详解
Nov 28 Python
Python实现微信表情包炸群功能
Jan 28 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 md5下16位和32位的实现代码
2008/04/09 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
js过滤数组重复元素的方法
2010/09/05 Javascript
修复IE9&safari 的sort方法
2011/10/21 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python 文本文件内容批量抽取实例
2018/12/10 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Python中遍历列表的方法总结
2019/06/27 Python
基于Python解密仿射密码
2019/10/21 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
幼师专业求职推荐信
2013/11/08 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
食品安全工作方案
2014/05/07 职场文书
小学生常见病防治方案
2014/06/06 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
庆七一宣传标语
2014/10/08 职场文书
教育见习报告范文
2014/11/03 职场文书
学校学期工作总结
2015/08/13 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS