Les serveurs Django s'appellent mutuellement via un utilisateur distant

高洛峰
Libérer: 2017-03-27 16:47:17
original
1825 Les gens l'ont consulté

Tout d'abord, le scénario est le suivant : il existe deux applications Web Django, et il existe une certaine connexion entre les deux applications. Dans certains cas, chacun doit obtenir les données de l'autre.

Mais nos applications auront certainement des mécanismes d'authentification correspondants. Vous ne laisserez pas les gens vous rendre visite avec désinvolture, n'est-ce pas ? Par exemple, vous devez glisser votre carte pour monter dans le bus (duh, carte de personne âgée ~~~). Nous savons qu'une fois l'utilisateur du navigateur connecté, chaque requête aura une session correspondante et le serveur peut déterminer les informations d'autorisation de l'utilisateur en fonction de la session utilisée. Mais il n'est pas facile pour nous de l'utiliser côté serveur, et il peut y avoir des problèmes tels que le délai d'expiration de la session.

J'ai donc vérifié la documentation officielle de Django et découvert que Django fournit un mécanisme d'utilisateur distant qui peut prendre en charge les appels à distance entre serveurs. Il vous suffit d'ajouter les paramètres suivants dans le paramètre :


MIDDLEWARE_CLASSES = (
    '...',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    '...',
)

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.RemoteUserBackend',
)
Copier après la connexion

Je l'ai testé avec joie et j'ai constaté qu'il ne fonctionnait toujours pas ~~~ (je savais ce n'était pas si simple)

Il reste une étape, ajoutez une ligne dans settings et ajoutez le nom d'utilisateur REMOTE_USER dans la variable d'environnement Notez que jerry est un utilisateur qui existe déjà dans le système <🎜. >


os.environ[&#39;REMOTE_USER&#39;] = "jerry"
Copier après la connexion
Terminé, de sorte que s'il n'y a aucune information de session dans la demande, ou s'il est jugé via la session que l'utilisateur n'est pas connecté, l'utilisateur REMOTE_USER ci-dessus sera automatiquement utilisé pour vous connecter. De cette façon, nous disposons d'une carte d'embarquement publique, mais pour des raisons de sécurité, nous devrons peut-être définir certaines restrictions d'autorisation pour cet utilisateur. (De cette façon, même si vous montez dans la voiture, vous ne pouvez que rester debout sans rien faire, haha)

Mais cela peut aussi causer des problèmes. Par exemple, nous pouvons juger si l'utilisateur actuel est connecté. dans d'autres interfaces, et sinon, démarrez de Dirigé vers l'écran de connexion. Cependant, après avoir utilisé REMOTE_USER, il se connectera automatiquement et ne pourra pas être dirigé vers la page de connexion. Cela nous oblige à repenser la logique de connexion des utilisateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal