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

  • 相关阅读:
    Git安装(操作篇)
    Git安装
    ES6基础练习
    SVN的安装与搭建及使用
    解决SVN文件不显示绿色小钩图标问题
    混入(mixin)
    ref属性与props配置项
    docker-compose部署 Mysql 8.0 主从模式基于GTID
    项目统一处理
    Docker Compose实战
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/4230458.html
Copyright © 2011-2022 走看看