Django管理シェルを通してユーザーを偽装する方法
基本的なシステムにアクセスする仮想シナリオでは、あなたのDjangoアプリケーションのためにサインアップされたユーザを偽装する方法があります.
しかし、これを達成するのは些細なことではない.パッケージがあります
最初に、あなたがアクセスする他のアカウントを使用して、djangoアプリケーションにログインする必要があります.開発ツールのCookieタブを参照してください
次に、Djangoサーバーが稼働しているシステムで、Django管理シェルにアクセスします.
読書ありがとう!
しかし、これを達成するのは些細なことではない.パッケージがあります
django-hijack
など、この機能を提供しますが、新しいパッケージをインストールしたり、既存のコードを変更せずにそれを達成したいと思います.ここでは、ライブ環境でそれについて行く単純な、非侵入的な方法です.アプローチ
最初に、あなたがアクセスする他のアカウントを使用して、djangoアプリケーションにログインする必要があります.開発ツールのCookieタブを参照してください
sessionid
クッキーの値.次のようになります.wxc0ldhcis45md5hbr3l7r4pyhewo0mr
.次に、Djangoサーバーが稼働しているシステムで、Django管理シェルにアクセスします.
python manage.py dbshell
次の手順を実行します.# Import the required interfaces
from django.contrib.sessions.models import Session
from boltobserver.users.models import User # This will be different for you, depending on where your User model is
from django.contrib.sessions.backends.db import SessionStore
# Find the user you wish to impersonate
u = User.objects.filter(email="[email protected]").first()
# Find the session you are currently using in your browser
s = Session.objects.filter(session_key = "wxc0ldhcis45md5hbr3l7r4pyhewo0mr").first()
# And finally, modify the session by binding it to your target user
# _auth_user_backend might be different for you, check settings.AUTHENTICATION_BACKENDS for the right value
s2.session_data = SessionStore().encode({"_auth_user_id": str(u.id), "_auth_user_backend": "allauth.account.auth_backends.AuthenticationBackend", "_auth_user_hash": u.get_session_auth_hash()})
s2.save()
ページをリフレッシュした後、あなたの希望のユーザーとしてログインする必要があります.読書ありがとう!
Reference
この問題について(Django管理シェルを通してユーザーを偽装する方法), 我々は、より多くの情報をここで見つけました https://dev.to/zwx00/how-to-impersonate-a-user-through-django-management-shell-4ke3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol