Django のログインユーザーを django shell を使って切り替える
Django
2023-10-12 12:41 (2年前)
問い合わせ対応などで、他のユーザーとして強制的なログインを行う方法。
操作を間違えたり、他のユーザーとしてログインしたまま放置して操作を間違えると危険なので、使用には十分注意すること。本番環境で行ってはいけません。
この操作方法を行って発生した影響・損害・問題に対して著者は一切の責任を負いません。
- まず、ブラウザで Django のアプリにログインする
- クッキーの session_id を記録しておく
- サーバで ./manage.py shell を実行する
# 自分の session_id
session_id = 'abcd1234xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# 代わりたいユーザーのID
user_id = 1
from django.conf import settings
from user.models import User
engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
session = engine.SessionStore(session_id)
dict(session) # 自分のユーザーIDか確認
user = User.objects.get(id=user_id)
user # 内容確認
session['_auth_user_id'] = user.id
session['_auth_user_hash'] = user.get_session_auth_hash()
session.save()
ブラウザをリロードすればユーザーが変わっている。
確認作業が終わったら、事故らないようクッキーの消去と正規ユーザーでの再ログインをしておく。
評価をお願いします (会員登録・ログイン不要)
現在の評価: 5.0 (1)
関連記事
Django を 5.1 にアップグレードしたら、管理サイトの Inline で、プライマリーキーが表示される場所に `{'name': 'id', 'label': 'ID', 'help_text': '', 'field': 'id', 'is_hidden': True}` のような文字列が表示される場合の対応
django-allauth で、ソーシャルアカウントプロバイダーを決め打ちしてログインビュー・リダイレクトビューを返す (AWS Cognitoを使う時など)
Django5にして依存ライブラリも更新したら、メール送信で SSL: CERTIFICATE_VERIFY_FAILED エラーが出るようになった
Django の ユニットテストの assertEqual の引数の first, second は実際は expected, actual
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。
開発相談をお待ちしています。