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()

ページをリフレッシュした後、あなたの希望のユーザーとしてログインする必要があります.
読書ありがとう!