django “如何”系列1:如何使用REMOTE_USER(远程用户)进行认证
2015-01-17 15:18
681 查看
这节主要介绍当web服务器使用了REMOTE_USER的时候,该如何在你的django应用中使用外部的认证源,远程用户主要见于企业内部网,主要使用单点登录解决方案。
在django中,REMOTE_USER在request.META中时有效的属性,如果你要在django中使用REMOTE_USER,请使用 RemoteUserMiddleware和 RemoteUserBackend这两个中间件
认证后端使用RemoteuserBacken替代ModelBacken
同个这个步骤,RemoteUserBacken这个中间件会检测在request.META['REMOTE_USER']中的用户名,并使用RemoteUserBacken去认证和自动登录这个用户名
如果的认证机制使用了一个通用的HTTP而不是REMOTE_USER,你可以继承RemoteUserBacken然后设置一个header属性替代默认的request.META,例如:
如果你需要更多自定义的控制,你可以继承这个类然后覆盖特定的部分
create_unknown_user:True 或者False,表示如果用户不存在数据库中,是否新建一个用户,默认为True
configure_user(user):配置一个新创建的用户,这个方法在一个新用户被创建后立即调用来执行一个通用的配置动作,比如设置用户的组,返回一个用户对象。
在django中,REMOTE_USER在request.META中时有效的属性,如果你要在django中使用REMOTE_USER,请使用 RemoteUserMiddleware和 RemoteUserBackend这两个中间件
配置
在中间件列表中在django.contrib.auth.middleware.AuthenticationMiddleware之后加入django.contrib.auth.middleware.RemoteUserMiddlewareMIDDLEWARE_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的用户认证管理,如何使用session(1)
- Django1.5内置的用户认证系统介绍(之二)使用User对象--by hillfree
- RADIUS:远程用户拨入认证系统(Remote Authentication Dial In User Service)
- django的用户认证管理,如何使用session(2)
- 使用外部LDAP用户认证后,DJANGO用户如何作登陆的操作?
- 使用Java Mail Authenticator子类进行用户认证来发送电子邮件示例
- Hadoop学习笔记(九):如何在windows上使用eclipse远程连接hadoop进行程序开发
- SqlServer版用户如何使用全文索引,进行优化网站搜索
- 如何使用SMOD和CMOD进行SD的用户增强
- 如何使用SMOD和CMOD进行SD的用户增强
- 如何恢复一个非用户sa创建的数据库,且使用原用户创建者进行访问
- 如何使用proc文件系统让用户空间和内核空间进行交互
- 【Android Training - UserInfo】记住登入用户的信息[Lesson 2 - 使用OAuth2来进行身份鉴定]
- 如何使用SMOD和CMOD进行SD的用户增强
- 如何使用SMOD和CMOD进行SD的用户增强
- 如何使用SMOD和CMOD进行SD的用户增强
- 如何使用VC进行远程调试(Remote Debug)
- How to use user script (custom script)如何使用用户脚本之Chrome
- Android 新浪微博之如何使用Oauth2.0进行认证