Maison  >  Article  >  développement back-end  >  Les serveurs Django s'appellent mutuellement via un utilisateur distant

Les serveurs Django s'appellent mutuellement via un utilisateur distant

高洛峰
高洛峰original
2017-03-27 16:47:171779parcourir

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',
)

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['REMOTE_USER'] = "jerry"
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!

Déclaration:
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