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常用算法学习基础教程
Apr 13 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
Django如何实现上传图片功能
Aug 16 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Python的in,is和id函数代码实例
Apr 18 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
python让函数不返回结果的方法
Jun 22 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 Python
基于Python实现nc批量转tif格式
Aug 14 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把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
javascript实现弹幕墙效果
2019/11/28 Javascript
利用python批量检查网站的可用性
2016/09/09 Python
浅述python2与python3的简单区别
2018/09/19 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
详解Anaconda 的安装教程
2020/09/23 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
在职研究生自我鉴定
2013/10/16 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
房贷收入证明范本
2015/06/12 职场文书
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python