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 urlopen 使用小示例
Sep 06 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
使用Python从零开始撸一个区块链
Mar 14 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
对Python信号处理模块signal详解
Jan 09 Python
Python传递参数的多种方式(小结)
Sep 18 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
Python中base64与xml取值结合问题
Dec 22 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
Python基础之常用库常用方法整理
Apr 30 Python
Python实现byte转integer
Jun 03 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中使用XML
2006/10/09 PHP
PHP Token(令牌)设计
2008/03/15 PHP
php一些公用函数的集合
2008/03/27 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
layui导航栏实现代码
2017/05/19 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
webpack打包js的方法
2018/03/12 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
flask session组件的使用示例
2018/12/25 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
结婚典礼证婚词
2014/01/08 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
常住证明范本
2015/06/23 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP
MySQL中一条update语句是如何执行的
2022/03/16 MySQL
Redis过期数据是否会被立马删除
2022/07/23 Redis
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript