ນີ້ແມ່ນຄໍາສັ່ງ flask-httpauth ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
flask-httpauth - ເອກະສານ Flask-HTTPAuth
Flask-HTTPAuth ເປັນການຂະຫຍາຍແບບງ່າຍໆທີ່ສະໜອງການພິສູດຢືນຢັນ HTTP ພື້ນຖານ ແລະ Digest
ສໍາລັບເສັ້ນທາງ Flask.
BASIC ສິດ ອຳ ນາດ EXAMPLE
ແອັບພລິເຄຊັນຕົວຢ່າງຕໍ່ໄປນີ້ໃຊ້ HTTP Basic authentication ເພື່ອປົກປ້ອງເສັ້ນທາງ '/':
ຈາກ flask ນໍາເຂົ້າ Flask
ຈາກ flask.ext.httpauth ນໍາເຂົ້າ HTTPBasicAuth
app = Flask(__name__)
auth = HTTPBasicAuth()
ຜູ້ໃຊ້ = {
"john": "ສະບາຍດີ",
"susan": "ສະບາຍດີ"
}
@auth.get_password
def get_pw(ຊື່ຜູ້ໃຊ້):
ຖ້າຊື່ຜູ້ໃຊ້ໃນຜູ້ໃຊ້:
ກັບຄືນ users.get(ຊື່ຜູ້ໃຊ້)
ກັບຄືນບໍ່ມີ
@app.route('/')
@auth.login_required
def index():
ກັບຄືນ "ສະບາຍດີ, %s!" % auth.username()
ຖ້າ __name__ == '__main__':
app.run ()
ໄດ້ get_password callback ຕ້ອງການກັບຄືນລະຫັດຜ່ານທີ່ກ່ຽວຂ້ອງກັບຊື່ຜູ້ໃຊ້ທີ່ໃຫ້
ເປັນການໂຕ້ຖຽງ. Flask-HTTPAuth ຈະອະນຸຍາດໃຫ້ເຂົ້າເຖິງພຽງແຕ່ຖ້າ get_password(ຊື່ຜູ້ໃຊ້) == ລະຫັດຜ່ານ.
ຖ້າລະຫັດຜ່ານຖືກເກັບໄວ້ hashed ໃນຖານຂໍ້ມູນຜູ້ໃຊ້ຫຼັງຈາກນັ້ນການໂທກັບຄືນໄປບ່ອນເພີ່ມເຕີມແມ່ນ
ຕ້ອງການ:
@auth.hash_password
def hash_pw(ລະຫັດຜ່ານ):
ກັບຄືນ md5(ລະຫັດຜ່ານ).hexdigest()
ໃນເວລາທີ່ hash_password ການໂທກັບຄືນແມ່ນສະຫນອງໃຫ້ການເຂົ້າເຖິງຈະໄດ້ຮັບການອະນຸຍາດໃນເວລາທີ່
get_password(ຊື່ຜູ້ໃຊ້) == hash_password(ລະຫັດຜ່ານ).
ຖ້າລະບົບ hashing ຮຽກຮ້ອງໃຫ້ຊື່ຜູ້ໃຊ້ເປັນທີ່ຮູ້ຈັກຫຼັງຈາກນັ້ນການເອີ້ນຄືນສາມາດໃຊ້ເວລາສອງ
ການໂຕ້ຖຽງແທນທີ່ຈະເປັນຫນຶ່ງ:
@auth.hash_password
def hash_pw(ຊື່ຜູ້ໃຊ້, ລະຫັດຜ່ານ):
get_salt(ຊື່ຜູ້ໃຊ້)
ກັບຄືນ hash (ລະຫັດຜ່ານ, ເກືອ)
ສໍາລັບລະດັບຄວາມຍືດຫຍຸ່ນຫຼາຍທີ່ສຸດ get_password ແລະ hash_password callbacks ສາມາດ
ທົດແທນດ້ວຍ verify_password:
@auth.verify_password
def verify_pw(ຊື່ຜູ້ໃຊ້, ລະຫັດຜ່ານ):
ກັບຄືນ call_custom_verify_function (ຊື່ຜູ້ໃຊ້, ລະຫັດຜ່ານ)
DIGEST ສິດ ອຳ ນາດ EXAMPLE
ຕົວຢ່າງຕໍ່ໄປນີ້ແມ່ນຄ້າຍຄືກັນກັບອັນທີ່ຜ່ານມາ, ແຕ່ HTTP Digest authentication ແມ່ນ
ໃຊ້:
ຈາກ flask ນໍາເຂົ້າ Flask
ຈາກ flask.ext.httpauth ນໍາເຂົ້າ HTTPDigestAuth
app = Flask(__name__)
app.config['SECRET_KEY'] = 'ກະແຈລັບທີ່ນີ້'
auth = HTTPDigestAuth()
ຜູ້ໃຊ້ = {
"john": "ສະບາຍດີ",
"susan": "ສະບາຍດີ"
}
@auth.get_password
def get_pw(ຊື່ຜູ້ໃຊ້):
ຖ້າຊື່ຜູ້ໃຊ້ໃນຜູ້ໃຊ້:
ກັບຄືນ users.get(ຊື່ຜູ້ໃຊ້)
ກັບຄືນບໍ່ມີ
@app.route('/')
@auth.login_required
def index():
ກັບຄືນ "ສະບາຍດີ, %s!" % auth.username()
ຖ້າ __name__ == '__main__':
app.run ()
ຈື່ໄວ້ວ່າເນື່ອງຈາກການພິສູດຢືນຢັນຕົວຍ່ອຍເກັບຂໍ້ມູນໄວ້ໃນ Flask's ກອງປະຊຸມ ຄັດຄ້ານ
ການຕັ້ງຄ່າຕ້ອງມີ a SECRET_KEY ຕັ້ງ.
API ເອກະສານອ້າງອີງ
ລະດັບ flask_httpauth.HTTPBasicAuth
ຫ້ອງຮຽນນີ້ຈັດການ HTTP Basic authentication ສໍາລັບເສັ້ນທາງ Flask.
get_password(password_callback)
ຟັງຊັນ callback ນີ້ຈະຖືກເອີ້ນໂດຍກອບເພື່ອໃຫ້ໄດ້
ລະຫັດຜ່ານສໍາລັບຜູ້ໃຊ້ທີ່ລະບຸ. ຕົວຢ່າງ:
@auth.get_password
def get_password(ຊື່ຜູ້ໃຊ້):
ກັບຄືນ db.get_user_password(ຊື່ຜູ້ໃຊ້)
hash_password(hash_password_callback)
ຖ້າຖືກກໍານົດ, ຟັງຊັນໂທຄືນນີ້ຈະຖືກເອີ້ນໂດຍກອບທີ່ຈະນໍາໃຊ້
ຂັ້ນຕອນການ hashing ແບບກຳນົດເອງໃຫ້ກັບລະຫັດຜ່ານທີ່ລູກຄ້າສະໜອງໃຫ້. ຖ້ານີ້
ບໍ່ໄດ້ໃຫ້ callback ລະຫັດຜ່ານຈະຖືກກວດສອບບໍ່ປ່ຽນແປງ. ໂທກັບ
ສາມາດໃຊ້ເວລາຫນຶ່ງຫຼືສອງການໂຕ້ຖຽງ. ສະບັບການໂຕ້ຖຽງຫນຶ່ງໄດ້ຮັບ
ລະຫັດຜ່ານທີ່ຈະ hash, ໃນຂະນະທີ່ສອງສະບັບ argument ໄດ້ຮັບຊື່ຜູ້ໃຊ້ແລະ
ລະຫັດຜ່ານໃນຄໍາສັ່ງນັ້ນ. ຕົວຢ່າງການເອີ້ນຄືນອາກິວເມັນດຽວ:
@auth.hash_password
def hash_password(ລະຫັດຜ່ານ):
ກັບຄືນ md5(ລະຫັດຜ່ານ).hexdigest()
ຕົວຢ່າງການເອີ້ນຄືນອາກິວເມັນສອງ:
@auth.hash_password
def hash_pw(ຊື່ຜູ້ໃຊ້, ລະຫັດຜ່ານ):
get_salt(ຊື່ຜູ້ໃຊ້)
ກັບຄືນ hash (ລະຫັດຜ່ານ, ເກືອ)
verify_password(verify_password_callback)
ຖ້າຖືກກໍານົດ, ຟັງຊັນໂທກັບນີ້ຈະຖືກເອີ້ນໂດຍກອບເພື່ອກວດສອບ
ວ່າການປະສົມປະສານຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານທີ່ລູກຄ້າສະຫນອງໃຫ້ແມ່ນຖືກຕ້ອງ.
ຟັງຊັນ callback ໃຊ້ເວລາສອງການໂຕ້ຖຽງ, ຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານແລະ
ຕ້ອງກັບຄືນມາ ທີ່ແທ້ຈິງ or ທີ່ບໍ່ຖືກຕ້ອງ. ຕົວຢ່າງການນໍາໃຊ້:
@auth.verify_password
def verify_password(ຊື່ຜູ້ໃຊ້, ລະຫັດຜ່ານ):
user = User.query.filter_by(ຊື່ຜູ້ໃຊ້).first()
ຖ້າບໍ່ແມ່ນຜູ້ໃຊ້:
ກັບຄືນບໍ່ຖືກຕ້ອງ
ກັບຄືນ passlib.hash.sha256_crypt.verify(ລະຫັດຜ່ານ, user.password_hash)
ໃຫ້ສັງເກດວ່າເມື່ອ ກ verify_password ໂທກັບແມ່ນສະຫນອງໃຫ້ get_password ແລະ
hash_password ໂທກັບບໍ່ໄດ້ຖືກນໍາໃຊ້.
error_handler(error_callback)
ຖ້າຖືກກໍານົດ, ຟັງຊັນໂທຄືນນີ້ຈະຖືກເອີ້ນໂດຍກອບໃນເວລາທີ່ມັນ
ມີຄວາມຈໍາເປັນທີ່ຈະສົ່ງຄວາມຜິດພາດການພິສູດຢືນຢັນກັບຄືນໄປບ່ອນລູກຄ້າ. ກັບຄືນ
ຄ່າຈາກຟັງຊັນນີ້ສາມາດເປັນຕົວຂອງຄໍາຕອບເປັນ string ຫຼືມັນ
ຍັງສາມາດເປັນວັດຖຸຕອບສະຫນອງທີ່ສ້າງຂຶ້ນດ້ວຍ make_ຕອບສະໜອງ. ຖ້າໂທຫານີ້
ບໍ່ໄດ້ສະຫນອງໃຫ້ການຕອບສະຫນອງຄວາມຜິດພາດມາດຕະຖານແມ່ນໄດ້ຖືກສ້າງຂຶ້ນ. ຕົວຢ່າງ:
@auth.error_handler
def auth_error():
ກັບຄືນ "<h1>ການເຂົ້າເຖິງຖືກປະຕິເສດ</h1>"
login_required(view_function_callback)
ຟັງຊັນໂທຄືນນີ້ຈະຖືກເອີ້ນເມື່ອການພິສູດຢືນຢັນສຳເລັດ. ນີ້
ໂດຍປົກກະຕິຈະເປັນຟັງຊັນ Flask view. ຕົວຢ່າງ:
@app.route('/private')
@auth.login_required
def private_page():
ກັບຄືນ "ສໍາລັບຄົນທີ່ໄດ້ຮັບອະນຸຍາດເທົ່ານັ້ນ!"
ຊື່ຜູ້ໃຊ້()
ຟັງຊັນການເບິ່ງທີ່ຖືກປ້ອງກັນດ້ວຍຊັ້ນຮຽນນີ້ສາມາດເຂົ້າເຖິງຂໍ້ມູນທີ່ຖືກບັນທຶກໄວ້
ຊື່ຜູ້ໃຊ້ໂດຍຜ່ານວິທີການນີ້. ຕົວຢ່າງ:
@app.route('/')
@auth.login_required
def index():
ກັບຄືນ "ສະບາຍດີ, %s!" % auth.username()
ລະດັບ flask.ext.httpauth.HTTPDigestAuth
ຫ້ອງຮຽນນີ້ຈັດການການກວດສອບ HTTP Digest ສໍາລັບເສັ້ນທາງ Flask. ໄດ້ SECRET_KEY
ການຕັ້ງຄ່າຕ້ອງຖືກຕັ້ງຢູ່ໃນແອັບພລິເຄຊັນ Flask ເພື່ອໃຫ້ເຊດຊັນເຮັດວຽກໄດ້.
Flask ໂດຍຄ່າເລີ່ມຕົ້ນເກັບຮັກສາ sessions ຂອງຜູ້ໃຊ້ຢູ່ໃນລູກຄ້າເປັນ cookies ທີ່ປອດໄພ, ດັ່ງນັ້ນ
ລູກຄ້າຕ້ອງສາມາດຈັດການກັບ cookies ໄດ້. ເພື່ອສະຫນັບສະຫນູນລູກຄ້າທີ່ບໍ່ແມ່ນຕົວທ່ອງເວັບຂອງເວັບໄຊຕ໌
ຫຼືວ່າບໍ່ສາມາດຈັດການກັບ cookies a ກອງປະຊຸມ ການໂຕ້ຕອບ ທີ່ຂຽນກອງປະຊຸມໃນ
ຕ້ອງໃຊ້ເຊີບເວີ.
get_password(password_callback)
ເບິ່ງການຢັ້ງຢືນພື້ນຖານສໍາລັບເອກະສານ ແລະຕົວຢ່າງ.
error_handler(error_callback)
ເບິ່ງການຢັ້ງຢືນພື້ນຖານສໍາລັບເອກະສານ ແລະຕົວຢ່າງ.
login_required(view_function_callback)
ເບິ່ງການຢັ້ງຢືນພື້ນຖານສໍາລັບເອກະສານ ແລະຕົວຢ່າງ.
ຊື່ຜູ້ໃຊ້()
ເບິ່ງການຢັ້ງຢືນພື້ນຖານສໍາລັບເອກະສານ ແລະຕົວຢ່າງ.
ໃຊ້ flask-httpauth ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net