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实现linux下使用xcopy的方法
Jun 28 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
Python交互环境下实现输入代码
Jun 22 Python
Python中的Numpy矩阵操作
Aug 12 Python
python实现石头剪刀布程序
Jan 20 Python
python tkinter canvas使用实例
Nov 04 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
python 爬取百度文库并下载(免费文章限定)
Dec 04 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php魔术变量用法实例详解
2014/11/13 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
写gulp遇到的ES6问题详解
2018/12/03 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
python获取目录下所有文件的方法
2015/06/01 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
python的json包位置及用法总结
2020/06/21 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
党组织公开承诺书
2014/03/29 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
提档介绍信范文
2015/10/22 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
浅析Python中的套接字编程
2021/06/22 Python
nginx搭建NFS网络文件系统
2022/04/14 Servers
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript