django “如何”系列1:如何使用REMOTE_USER(远程用户)进行认证
这节主要介绍当web服务器使用了REMOTE_USER的时候,该如何在你的django应用中使用外部的认证源,远程用户主要见于企业内部网,主要使用单点登录解决方案。
在django中,REMOTE_USER在request.META中时有效的属性,如果你要在django中使用REMOTE_USER,请使用 RemoteUserMiddleware和 RemoteUserBackend这两个中间件
配置
在中间件列表中在django.contrib.auth.middleware.AuthenticationMiddleware之后加入django.contrib.auth.middleware.RemoteUserMiddleware
MIDDLEWARE_CLASSES = (
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
...
)
认证后端使用RemoteuserBacken替代ModelBacken
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.RemoteUserBackend',
)
同个这个步骤,RemoteUserBacken这个中间件会检测在request.META['REMOTE_USER']中的用户名,并使用RemoteUserBacken去认证和自动登录这个用户名
注意
因为RemoteUserBacken是继承ModelBacken的,所以你还是有和ModelBacken一样的权限验证的
如果的认证机制使用了一个通用的HTTP而不是REMOTE_USER,你可以继承RemoteUserBacken然后设置一个header属性替代默认的request.META,例如:
from django.contrib.auth.middleware import RemoteUserMiddleware class CustomHeaderMiddleware(RemoteUserMiddleware):
header = 'HTTP_AUTHUSER'
类讲解
class django.contrib.auth.backends.RemoteUserBackend
如果你需要更多自定义的控制,你可以继承这个类然后覆盖特定的部分
属性
这个类继承了ModelBacken,自定义的属性只有一个:
create_unknown_user:True 或者False,表示如果用户不存在数据库中,是否新建一个用户,默认为True
方法
clean_username(username):在获得或创建一个用户之前,清理这个用户名的信息,返回一个被清理后的用户名
configure_user(user):配置一个新创建的用户,这个方法在一个新用户被创建后立即调用来执行一个通用的配置动作,比如设置用户的组,返回一个用户对象。
django “如何”系列1:如何使用REMOTE_USER(远程用户)进行认证的更多相关文章
- Radius 远程用户拨号认证系统
RADIUS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系 ...
- Django学习系列6:使用selenium测试用户交互
学习系列5中的单元测试有报错信息,这儿来编写functional_tests.py文件,扩充其中的功能测试 # File: functional_test.py # Author: Rxf # Cre ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Python+Django+SAE系列教程17-----authauth (认证与授权)系统1
通过session,我们能够在多次浏览器请求中保持数据,接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们须要认证. 当然了,Django 也提供了 ...
- linux入门系列14--ssh服务及主机远程管理
通过前面十余篇文章的介绍,相信已经初步入门Linux本地管理的基本方法了,后续的文章将介绍Linux中常用的服务部署以及如何为外部提供相应的服务. 系列文章第三篇"linux入门系列3--l ...
- Django学习系列之Form验证
django表单基础 django表单分类 基于django.forms.Form:所有表单类的父类 基于django.forms.ModelForm:可以和模型类绑定的Form Form验证流程 定 ...
- Maven远程仓库的认证
大部分远程仓库无须认证就可以访问,但有时处于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库.为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名及密码. 这时,为了能让Maven访问仓库 ...
- 希赛网 > 问答 > 数据库 > MySQL数据库 > MySQL的管理与维护 > MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I
MySql开启远程用户登录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'huawei' WITH GRANT OPTION; FL ...
- 使用NetUserAdd API函数创建远程用户
http://apps.hi.baidu.com/share/detail/33407620 使用NetUserAdd编程创建远程用户Windows API NetUserAdd()可以创建Windo ...
随机推荐
- BZOJ2816:[ZJOI2012]网络——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2816 https://www.luogu.org/problemnew/show/P2173 有一 ...
- vue-router的钩子
vue-router的钩子分为三类: 1. 全局钩子2. 路由独享钩子3. 组件内钩子 1. 全局钩子 beforeEach(to,from,next) afterEach(route) 2. 路由独 ...
- HDU2686 费用流 模板
Matrix Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- JAVA List集合转Page(分页对象)
/** * @version 1.0 * @author: fwjia */ import java.util.List; public class PageModel<T> { /*** ...
- [实战篇入门]02-POI简单创建Excel
周日的小讲堂要讲到这里,趁中午时间写点东西,记录昨天晚上完成的东西,在这里只是简单的介绍如何创建对于样式问题,我不过多的说,因为之后的教程会使用模版方式搞定! 在学习这段代码的时候,希望各位访问Apa ...
- [技巧篇]10.那些年我们一起优化过的MyEclipse8.6
这里里面是针对于四海的给位学生预留的视频,请自行下载,我希望对大家有所帮助 我这里使用了百度网盘,这里的东西还是比较多的!如果喜欢请关注我,当好胖先生的粉丝 链接:http://pan.baidu.c ...
- Android之极光推送发送自定义消息
Android端实现主要代码: <span style="font-size:14px;">import java.io.IOException; import jav ...
- 51Nod 1031 骨牌覆盖 | Fibonacci
Input 输入N(N <= 1000) Output 输出数量 Mod 10^9 + 7 Input示例 3 Output示例 3 思路:对于第x块骨牌的情况,我们用a[x]表示其方法数:其比 ...
- 51Nod 1001数组中和等于K的数对
Input示例 8 9 -1 6 5 3 4 2 9 0 8 Output示例 -1 9 0 8 2 6 3 5 first try: #include "bits/stdc++.h&quo ...
- Redux Concepts
Redux解决数据通信复杂问题. Store 存储数据的地方,一个应用只有一个Store. State Store对象包含所有数据. Action 一个对象,表示View的变化. Action Cre ...