Django のログインユーザーを django shell を使って切り替える

Django
2023-10-12 21:41 (7ヶ月前) ytyng

問い合わせ対応などで、他のユーザーとして強制的なログインを行う方法。

操作を間違えたり、他のユーザーとしてログインしたまま放置して操作を間違えると危険なので、使用には十分注意すること。本番環境で行ってはいけません。

この操作方法を行って発生した影響・損害・問題に対して著者は一切の責任を負いません。

  1. まず、ブラウザで Django のアプリにログインする
  2. クッキーの session_id を記録しておく
  3. サーバで ./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()

ブラウザをリロードすればユーザーが変わっている。

確認作業が終わったら、事故らないようクッキーの消去と正規ユーザーでの再ログインをしておく。

Current rating: 5

Comments

Archive

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011