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 uuid模块使用实例
Apr 08 Python
解析Python中while true的使用
Oct 13 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
Python面向对象类继承和组合实例分析
May 28 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
在django中自定义字段Field详解
Dec 03 Python
Python动态导入模块和反射机制详解
Feb 18 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 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中对数据库操作的封装
2006/10/09 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
php导出CSV抽象类实例
2014/09/24 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
python写的一个文本编辑器
2014/01/23 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Django admin美化插件suit使用示例
2017/12/12 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
Python判断telnet通不通的实例
2019/01/26 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
对python中的装包与解包实例详解
2019/08/24 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
专升本自我鉴定
2013/10/10 职场文书
三年级数学教学反思
2014/01/31 职场文书
团员个人总结
2015/02/26 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
Win11查看设备管理器
2022/04/19 数码科技