Django中的函式make_password、set_password和check_password

侬侬发發表於2024-04-24

在Django中,有一些用於處理密碼的常用函式,包括make_passwordset_passwordcheck_password。這些函式用於生成、設定和驗證密碼,但沒有直接的get_password函式來獲取使用者的密碼。

  1. make_password: make_password函式用於生成密碼的雜湊值。它接受一個明文密碼作為輸入,並返回其雜湊值。這個雜湊值通常用於將密碼儲存到資料庫中。

    from django.contrib.auth.hashers import make_password
    password = 'my_password'
    hashed_password = make_password(password)
  2. set_password: set_password函式用於將使用者的密碼設定為雜湊值。它接受一個明文密碼作為輸入,並將其雜湊值儲存到使用者物件中。通常情況下,你會在建立使用者或者使用者更改密碼時使用這個函式。

    from django.contrib.auth.models import User
    user = User.objects.get(username='my_username')
    user.set_password('my_new_password')
    user.save()
  3. check_password: check_password函式用於驗證密碼是否與雜湊值匹配。它接受一個明文密碼和一個雜湊值作為輸入,並返回一個布林值,指示密碼是否匹配。

    from django.contrib.auth.hashers import check_password
    password = 'my_password'
    hashed_password = '...' # 從資料庫中獲取的雜湊值
    is_match = check_password(password, hashed_password)

這些函式提供了一種安全的方式來處理密碼,同時保護使用者的隱私和安全。但需要注意的是,Django沒有提供直接的get_password函式來獲取使用者的密碼,因為儲存密碼的安全最好是不可逆的。

相關文章