ฉันใช้ Django (เวอร์ชั่น 1.3) และลืมทั้งชื่อผู้ใช้และรหัสผ่านของผู้ดูแลระบบ จะรีเซ็ตทั้งสองอย่างไร
และเป็นไปได้หรือไม่ที่จะทำให้ผู้ใช้ปกติเป็นผู้ดูแลระบบและจากนั้นลบสถานะผู้ดูแลระบบ?
ฉันใช้ Django (เวอร์ชั่น 1.3) และลืมทั้งชื่อผู้ใช้และรหัสผ่านของผู้ดูแลระบบ จะรีเซ็ตทั้งสองอย่างไร
และเป็นไปได้หรือไม่ที่จะทำให้ผู้ใช้ปกติเป็นผู้ดูแลระบบและจากนั้นลบสถานะผู้ดูแลระบบ?
คำตอบ:
python manage.py changepassword <user_name>
manage.py createsuperuser
เพื่อสร้าง superuser ตัวที่สองจากนั้นดูรายการผู้ใช้เพื่อค้นหาต้นฉบับ จากนั้นเข้าสู่ระบบในฐานะที่เป็นต้นฉบับและลบ superuser ใหม่
python manage.py createsuperuser
จะสร้าง superuser อื่นคุณจะสามารถเข้าสู่ระบบของผู้ดูแลระบบและจดจำชื่อผู้ใช้ของคุณได้เพื่อให้สิทธิ์ผู้ใช้ปกติเปิดเปลือกด้วยpython manage.py shell
และลอง:
from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
user.is_staff = True
คุณอาจลองผ่านคอนโซล:
python manage.py shell
จากนั้นใช้สคริปต์ต่อไปนี้ในเชลล์
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)
จะแสดงรายการผู้ใช้ขั้นสูงทั้งหมดในระบบ หากคุณรู้จักชื่อผู้ใช้ของคุณจากรายการ:
usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
และคุณตั้งรหัสผ่านใหม่ (:
User.objects.filter(is_superuser=True)
pip install django-extensions
เพิ่มไปและเรียกใช้installed apps
ระดับจะสามารถใช้ได้และคุณก็สามารถ ./manage.py shell_plus
User
password-change
คุณสามารถสร้าง superuser ใหม่ด้วยcreatesuperuser
คำสั่ง
นี่เป็นคำถามที่ดีมาก
หลาม Manage.py changepassword user_name
ตัวอย่าง: -
python manage.py changepassword mickey
การตั้งค่าใหม่ควรเริ่มต้น python manage.py createsuperuser
เพื่อสร้างผู้ใช้ ดูเหมือนว่าไม่มีรหัสผ่านชื่อผู้ใช้เริ่มต้นในการเข้าสู่ระบบผู้ดูแลระบบ
หนึ่งในวิธีที่ดีที่สุดในการเรียกชื่อผู้ใช้และรหัสผ่านคือการดูและอัปเดต รูปแบบผู้ใช้เป็นวิธีที่สมบูรณ์แบบในการทำเช่นนั้น
พิมพ์รายชื่อผู้ใช้สำหรับผู้ใช้ Python 2 ใช้คำสั่ง "print users" สำหรับผู้ใช้ Python 3 ใช้คำสั่ง "print (users)" ผู้ใช้รายแรกมักเป็นผู้ดูแลระบบ
เลือกผู้ใช้ที่คุณต้องการเปลี่ยนรหัสผ่านเช่น
"user = users[0]"
ตั้งรหัสผ่าน
user.set_password('name_of_the_new_password_for_user_selected')
บันทึกรหัสผ่านใหม่
"user.save()"
เริ่มต้นเซิร์ฟเวอร์และเข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านที่อัปเดต
manage.py changepassword
คือคุณไม่ได้ถูก จำกัด ให้ใช้รหัสผ่านใดที่คุณสามารถใช้หรือไม่สามารถใช้งานได้ - ไม่เหมือนกับชื่อผู้ใช้อึมากเกินไป (นี่คือสภาพแวดล้อม dev ของฉันฉันไม่ได้สนับสนุนรหัสผ่านที่อ่อนแอคุณควรใช้รหัสผ่านที่รัดกุมในการผลิต)
คุณอาจตอบคำถามตั้งค่าผิดและไม่มีสมาชิกในทีม ในกรณีนี้ให้ไปที่ postgres:
obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id | 1
is_superuser | f
is_staff | f
...
หากต้องการแก้ไขให้แก้ไขโดยตรง:
update auth_user set is_staff='true' where id=1;
สองวิธีในการทำสิ่งนี้:
changepassword
คำสั่งการจัดการ :
(env) $ python manage.py changepassword <username>
หรือ (ซึ่งขยายไปตามคำตอบเล็กน้อย แต่ใช้ได้กับรุ่นผู้ใช้แบบขยาย) โดยใช้เชลล์ django-adminดังต่อไปนี้:
(env) $ python manage.py shell
สิ่งนี้ควรแสดงพร้อมต์คำสั่งเชลล์ดังนี้:
Python 3.7.2 (default, Mar 27 2019, 08:44:46)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
จากนั้นคุณต้องการต่อไปนี้:
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.get(username='admin@hug.com')
>>> user.set_password('new password')
>>> user.save()
>>> exit()
NBเหตุใดฉันจึงตอบคำถามนี้พร้อมคำตอบนี้
เพราะดังที่กล่าวมาUser = get_user_model()
จะทำงานให้กับUser
โมเดลที่คุณกำหนดเอง ใช้from django.contrib.auth.models import User
แล้วUser.objects.get(username='username')
อาจโยนข้อผิดพลาดต่อไปนี้:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
หากคุณลืมสร้างผู้ใช้ผู้ดูแลระบบก่อนสร้างด้วยcreatesuperuser
คำสั่งเปิดmanage.py
แล้วเปลี่ยนรหัสผ่าน
คุณสามารถลองสิ่งนี้:
1. เปลี่ยนรหัสผ่าน Superuser โดยไม่ใช้คอนโซล
python manage.py changepassword <username>
2. เปลี่ยนรหัสผ่าน Superuser ผ่านคอนโซล
ในกรณีที่คุณไม่รู้จักชื่อผู้ใช้ตามที่สร้างไว้ที่นี่ คุณสามารถรับผู้ใช้ตามที่อธิบายโดย @FallenAngel ด้านบน
python manage.py shell
from django.contrib.auth.models import User
usrs = User.objects.filter(is_superuser=True)
#identify the user
your_user = usrs.filter(username="yourusername")[0]
#youruser = usrs.get(username="yourusername")
#then set the password
อย่างไรก็ตามในกรณีที่คุณสร้างโมเดลผู้ใช้อิสระของคุณ กรณีง่ายคือเมื่อคุณต้องการใช้อีเมลเป็นชื่อผู้ใช้แทนชื่อผู้ใช้เริ่มต้น ในกรณีนี้โมเดลผู้ใช้ของคุณจะอยู่ที่ใดที่หนึ่งเช่น your_accounts_app.models จากนั้นโซลูชันด้านบนจะไม่ทำงาน ในกรณีนี้คุณสามารถใช้เมธอด get_user_model แทน
from django.contrib.auth import get_user_model
super_users = get_user_model().objects.filter(is_superuser=True)
#proceed to get identify your user
# and set their user password
หากคุณลืมผู้ดูแลระบบของคุณคุณต้องสร้างผู้ใช้ใหม่โดยใช้
python manage.py createsuperuser <username>
และสำหรับรหัสผ่านมีคำสั่ง CLI changepassword
สำหรับ django เพื่อเปลี่ยนรหัสผ่านผู้ใช้
python manage.py changepassword <username>
หรือ
django-admin changepassword <username>
หรือเรียกใช้รหัสนี้ใน Django env
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
สิ่งที่ควรสังเกตอีกอย่างคือการตั้งค่าสถานะผู้ใช้ของคุณis_staff
เป็นใช้งานอยู่ อย่างน้อยนั่นคือสิ่งที่ทำให้ฉันได้ผล สำหรับรายละเอียดเพิ่มเติมฉันสร้างอีกหนึ่งsuperuser
คนตามที่อธิบายไว้ข้างต้น จากนั้นผมก็ไปที่ตารางฐานข้อมูลauth_user
และค้นหาชื่อผู้ใช้นั้นเพื่อให้แน่ใจว่ามันตั้งธงที่จะis_staff
1
ในที่สุดนั่นทำให้ฉันสามารถเข้าสู่admin
เว็บไซต์
สร้าง superuser ใหม่ด้วยคำสั่ง "python Manage.py generateuperuser" เข้าสู่ระบบในฐานะผู้ใช้ใหม่สุด คลิกที่ลิงค์ 'ผู้ใช้' จากนั้นคลิกที่ผู้ใช้ที่คุณต้องการลบ คลิกที่ลบผู้ใช้ที่ส่วนท้ายของหน้าแบบฟอร์ม
หมายเหตุ - กระบวนการข้างต้นจะทำการเปลี่ยนแปลงบันทึกกิจกรรมที่กระทำโดยผู้ใช้รายนั้น
หลาม Manage.py changepassword ชื่อผู้ใช้
ใช้
หลาม Manage.py dumpdata
จากนั้นดูตอนท้ายคุณจะพบชื่อผู้ใช้
วิธีที่ดีที่สุดคือไปที่เทอร์มินัลและประเภทของคุณ
python manage.py createsuperuser
และใส่รหัสผ่านและชื่อผู้ใช้อีกครั้ง แต่คุณจะสูญเสียโปรไฟล์บางส่วนที่คุณสร้างไว้ก่อนหน้านี้ในกรณีส่วนใหญ่
ฉันคิดว่าวิธีที่ดีกว่าที่บรรทัดคำสั่ง
หลาม Manage.py generateuperuser
มันง่ายมากเพียงแค่พิมพ์คำสั่งนี้ใน yout commandline
หลาม Manage.py เปลี่ยนชื่อรหัสผ่านของคุณ
อีกวิธีในการรับชื่อผู้ใช้ (และข้อมูลส่วนใหญ่) คือการเข้าถึงฐานข้อมูลโดยตรงและอ่านข้อมูลจากตาราง