zoukankan      html  css  js  c++  java
  • 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):配置一个新创建的用户,这个方法在一个新用户被创建后立即调用来执行一个通用的配置动作,比如设置用户的组,返回一个用户对象。

  • 相关阅读:
    用GDB调试程序(一)
    关于“鸡脚神”的看法
    Oracle 经典SQL 专为笔试准备
    怎样设计接口?
    myeclipse6.0下载及注冊码
    VB连接Mysql数据库
    开源html5_kiwijs_helloworld
    server宕机监控、检測、报警程序(139绑定手机短信报警)monitor_down.sh
    js实现自己定义鼠标右键-------Day45
    C/C++程序猿必须熟练应用的开源项目
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/4230458.html
Copyright © 2011-2022 走看看