详解使用django-mama-cas快速搭建CAS服务的实现


Posted in Python onOctober 30, 2019

当公司有多条产品线,或者有多个不同的应用的时候,每次都做登录是个非常烦人的事情。(原谅我没有从SSO的角度看这个问题。。对我来说能偷懒少写点东西最实在)。为什么需要每次都做个登录?做登录就意味着我的系统还得要有用户、角色、菜单管理,天啊!RBAC又来了(摊手)。

当我新做一个应用的时候,我最希望的就是这些东西都是现有的,接入一下就可以用了,一方面来说省事,另外一方面来说,也节省测试的时间。从服务的角度来看,认证这种动作也应该被划分到一个具体的服务里面去。

为什么没有用Jasig

无论是OSC还是Github里面,基于Jasig的实现还是非常多的,不过Jasig也太多配置项了。。看着头晕。大周末的时间不适合想那么复杂的事情。。然后翻到了django-cas这个系列的项目,不过django-cas这个项目早就停更了,另外还有django-mama-cas和django-cas-ng,试了下django-cas-ng。。文档不全,看着比较累(周末的时候脑袋发挥不了全部状态。。。。),django-mama-cas这个项目倒是挺不错的,文档全,配置容易。一下就搞出来了(不过API上面还不是非常全,比起其他来说还是好很多的啦)

安装django-mama-cas

pip install django-mama-cas

更新配置

INSTALLED_APPS = (
  # ...existing apps...
  'mama_cas',
)

更新路由

urlpatterns = [
  # ...existing urls...
  url(r'^cas/', include('mama_cas.urls')),
]

添加回调,这里使用内置的,也可以自己扩展。回调主要是登录后可以用ticket过来换用户的其他信息

MAMA_CAS_SERVICES = [
  {
    'SERVICE': 'http://127.0.0.1:8000',
    'CALLBACKS': [
      'mama_cas.callbacks.user_model_attributes',
    ],
  },
]

好啦~到此该配置的都配好了。然后就可以使用了,这个app最主要的api有2个

http://127.0.0.1:8000/cas/login?service=http://127.0.0.1:8000/admin

详解使用django-mama-cas快速搭建CAS服务的实现

这个是用于登录的,service就是认证后要帮你回调到哪,回调过去之后有个Ticket的,自己存起来

Ticket拿到之后就可以过来换用户信息了,用户的信息都取得到,然后自行放到session里面就完事。

小结

Django-mama-cas这个项目还是非常简单易用的,下次把Oauth配合一下就可以很方便的把统一认证和RBAC的事情都在这个服务搞定了,这种功能每次都写还真是很烦人的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
node.js获取参数的常用方法(总结)
May 29 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
对python判断ip是否可达的实例详解
Jan 31 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
python 实现视频 图像帧提取
Dec 10 Python
python实现QQ邮箱发送邮件
Mar 06 Python
Python与C/C++的相互调用案例
Mar 04 Python
python实现批量移动文件
Apr 05 Python
Django实现CAS+OAuth2的方法示例
Oct 30 #Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 #Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 #Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 #Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 #Python
Python自动化完成tb喵币任务的操作方法
Oct 30 #Python
Flask框架 CSRF 保护实现方法详解
Oct 30 #Python
You might like
PHP写MySQL数据 实现代码
2009/06/15 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
yii用户注册表单验证实例
2015/12/26 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python简单程序读取串口信息的方法
2015/03/13 Python
Python二分法搜索算法实例分析
2015/05/11 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
《钱学森》听课反思
2014/03/01 职场文书
辅导员评语
2014/05/04 职场文书
人事任命书格式
2014/06/05 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
儿园租房协议书范本
2014/12/02 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python