Tôi đã nhập một nhóm người dùng và dữ liệu của họ vào dự án django. Tôi cần phải chỉ định một mật khẩu cho mỗi. Là một đoạn mã như vậy ra khỏi đó để tạo mật khẩu mà sẽ đối phó với băm Django và muối?Trình tạo mật khẩu Django
Trả lời
Bạn cũng có thể sử dụng được xây dựng trong chức năng make_random_password
for user in new_users:
password = User.objects.make_random_password()
user.set_password(password)
# email/print password
Cũng lưu ý rằng 'make_random_password()' chấp nhận các đối số từ khóa 'length' và' allowed_chars'. – benjaoming
import random
import string
user.set_password(''.join([random.choice(string.digits + string.letters) for i in range(0, 10)]))
user.save()
Chỉ cần sử dụng API - django.contrib.auth.models.User
có phương thức .set_password()
. Dưới đây là một ví dụ (mà tôi đã không kiểm tra, nhưng bạn sẽ nhận được các ý tưởng):
from random import choice
from string import digits, letters
from django.contrib.auth.models import User
def _pw(length=6):
s = ''
for i in range(length):
s += random.choice(digits + letters)
return s
for user in User.objects.all(): # or .filter(...)
user.set_password(_pw())
user.save()
Ngoài ra bạn có thể sử dụng from django.utils.crypto import get_random_string
ra khỏi auth
mô-đun, nó cũng chấp nhận đối số từ khóa length
và allowed_chars
.
+1. Ưu tiên hơn User.objects.make_random_password() vì nó có thể được chạy từ các script độc lập mà không cần phải cấu hình các thiết lập Django. Tôi sử dụng điều này cho thế hệ vật cố ngẫu nhiên. – m000
Nếu bạn chỉ cần giải pháp của Django, hãy thử tiếp theo:
Để tạo mật khẩu bình thường, hãy thử sử dụng BaseUserManager.
In [341]: from django.contrib.auth.base_user import BaseUserManager
# simple password, it length is 10, and it contains ascii letters and digits
In [344]: BaseUserManager().make_random_password()
Out[344]: 'aYMX5Wk7Cu'
In [345]: BaseUserManager().make_random_password()
Out[345]: 'rM7759hw96'
In [346]: BaseUserManager().make_random_password()
Out[346]: 'EkbZxEXyAm'
# passed length of a password
In [347]: BaseUserManager().make_random_password(45)
Out[347]: 'dtM9vhSBL9WSFeEdPqj8jVPMH9ytsjPXrkaHUNUQu4zVH'
In [348]: BaseUserManager().make_random_password(45)
Out[348]: 'jypVaXuw9Uw8mD4CXtEhtj2E4DVYx23YTMwy8jGTKsreR'
# passed length of a password and symbols for choice
In [349]: BaseUserManager().make_random_password(45, 'abcdf')
Out[349]: 'daacbfabfccfdbdddbbcddcfcfbfcdabbaccbfcadbccd'
In [351]: import string
# password contains only digits
In [352]: BaseUserManager().make_random_password(50, string.digits)
Out[352]: '00526693878168774026398080457185060971935025500935'
# password contains only ascii symbols in lowercase
In [353]: BaseUserManager().make_random_password(50, string.ascii_lowercase)
Out[353]: 'nvftisuezofnashdhlalfmscnmqtvigwjpfwsyycsefekytmar'
# password contains only ascii symbols in uppercase
In [354]: BaseUserManager().make_random_password(50, string.ascii_uppercase)
Out[354]: 'APKSUHHHTAAJCFEUONIXWWAKJGXIBHTQDZBTSYFTPDFOSRYEQR'
Nếu bạn cần mạnh mẽ và sức mạnh mật khẩu, sau đó cố gắng xây dựng trong "hashers" trong Django
In [355]: from django.contrib.auth.hashers import make_password
In [357]: make_password('')
Out[357]: 'pbkdf2_sha256$30000$JuKXdW3shCjL$PsPJX7Zale5JUBkWpIJI/+QlsuVWhz9Q+GQWVtTpQ/Y='
In [358]: make_password('text')
Out[358]: 'pbkdf2_sha256$30000$lSv8kQ39BHE7$KQC5hRhuphYBXmBrXZBJGC+nxygfNWTDf8zQf/NNgY8='
In [360]: make_password('text', salt=['simething'])
Out[360]: "pbkdf2_sha256$30000$['simething']$D+1vJQx9W2/c9sIz/J+7iEz4d4KFPg/R+0S87n/RKR4="
In [361]: make_password('text', salt=['something'])
Out[361]: "pbkdf2_sha256$30000$['something']$NIcmOkEyg6mnH5Ljt+KvI2LVgZWg6sXS6Rh865rbhSc="
Ghi chú:
- sử dụng Django 1.10 và Python 3.4
- 1. Django vấn đề mật khẩu
- 2. Mã hóa mật khẩu trên POST Django
- 3. Thay đổi mật khẩu trong Django quản
- 4. django xác nhận mật khẩu validator
- 5. Xác minh mật khẩu Django trong Ruby on Rails cung cấp mật khẩu không khớp
- 6. Hướng dẫn cho một bộ đếm mật khẩu mật khẩu (Trình kiểm tra mật khẩu) Thiết kế
- 7. Biểu mẫu Django + để đặt lại mật khẩu
- 8. Python/Django - Tránh lưu mật khẩu trong mã nguồn
- 9. Tạo mã bí mật để đặt lại mật khẩu
- 10. Cách tạo trường mật khẩu trong xcode
- 11. Di chuyển mật khẩu từ Drupal 7 sang Django
- 12. Django, ModelForms, Người dùng và UserProfile - không băm mật khẩu
- 13. xác thực django mà không cần mật khẩu
- 14. Chủ đề email đặt lại mật khẩu Django
- 15. Thành viên Tạo mật khẩu chỉ có mật khẩu chữ và số?
- 16. Ẩn mật khẩu kho khóa/mật khẩu JKS khi chạy quy trình Java
- 17. HTML/CSS: Cách nhập "mật khẩu" hiển thị mật khẩu?
- 18. Khôi phục mật khẩu bằng mật khẩu sha1 băm
- 19. Đập mật khẩu
- 20. Tạo cặp khóa RSA trong javascript, dựa trên mật khẩu
- 21. Cách tạo mật khẩu ngẫu nhiên hoặc URL tạm thời để đặt lại mật khẩu trong Zend Framework?
- 22. Phát sinh: Tạo Người dùng không có Mật khẩu, sau đó Yêu cầu Mật khẩu để Sử dụng Tài khoản?
- 23. Lưu trữ mật khẩu an toàn trong mã chương trình?
- 24. Quên mật khẩu URL
- 25. mật khẩu redacting logger
- 26. mạnh mật khẩu regex
- 27. Mật khẩu vải
- 28. Mã hóa mật khẩu
- 29. .htaccess nhắc nhập mật khẩu
- 30. Mã hóa mật khẩu joomla
Nó có thể đã thay đổi, nhưng bạn không phải "đối phó với hàm băm và muối Django" bởi vì bạn có thể sử dụng ['.set_pass word() 'helper function] (https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django.contrib.auth.models.User.set_password) trên một đối tượng' User' xử lý cung cấp mật khẩu với hàm dẫn xuất khóa đã chọn của bạn và đặt trường/thuộc tính '.password' với nó. –