เด‡เด‚เด—เตเดฒเต€เดทเตเดซเตเดฐเดžเตเดšเตเดธเตเดชเดพเดจเดฟเดทเต

Ad


OnWorks เดซเต†เดตเดฟเด•เตเด•เต‹เตบ

เดซเตเดฒเดพเดธเตเด•เต-httpauth - เด•เตเดฒเต—เดกเดฟเตฝ เด“เตบเดฒเตˆเดจเดฟเตฝ

เด‰เดฌเตเดฃเตเดŸเต เด“เตบเดฒเตˆเตป, เดซเต†เดกเต‹เดฑ เด“เตบเดฒเตˆเตป, เดตเดฟเตปเดกเต‹เดธเต เด“เตบเดฒเตˆเตป เดŽเดฎเตเดฒเต‡เดฑเตเดฑเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ MAC OS เด“เตบเดฒเตˆเตป เดŽเดฎเตเดฒเต‡เดฑเตเดฑเตผ เดŽเดจเตเดจเดฟเดตเดฏเดฟเดฒเต‚เดŸเต† OnWorks เดธเต—เดœเดจเตเดฏ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดฆเดพเดคเดพเดตเดฟเตฝ เดซเตเดฒเดพเดธเตเด•เต-httpauth เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

Ubuntu Online, Fedora Online, Windows online emulator เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ MAC OS เด“เตบเดฒเตˆเตป เดŽเดฎเตเดฒเต‡เดฑเตเดฑเตผ เดŽเดจเตเดจเดฟเด™เตเด™เดจเต†เดฏเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดธเต—เดœเดจเตเดฏ เด“เตบเดฒเตˆเตป เดตเตผเด•เตเด•เตโ€Œเดธเตเดฑเตเดฑเต‡เดทเดจเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต OnWorks เดธเต—เดœเดจเตเดฏ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดฆเดพเดคเดพเดตเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดซเตเดฒเดพเดธเตเด•เต-httpauth เด†เดฃเดฟเดคเต.

เด‰เดฌเตเดฃเตเดŸเตเดตเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดซเต†เดกเต‹เดฑเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดตเดฟเตปเดกเต‹เดธเต เดธเดฟเดฎเตเดฎเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• MACOS เดธเดฟเดฎเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

เดชเดŸเตเดŸเดฟเด•:

NAME


flask-httpauth - Flask-HTTPAuth เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป

เดซเตเดฒเดพเดธเตเด•เต-HTTPAuth เด…เดŸเดฟเดธเตเดฅเดพเดจ, เดกเตˆเดœเดธเตเดฑเตเดฑเต HTTP เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดฎเดพเดฃเต
เดซเตเดฒเดพเดธเตเด•เต เดฑเต‚เดŸเตเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ.

เดฌเต‡เดธเดฟเด•เต เด…เด‚เด—เต€เด•เดพเดฐเด‚ เด‰เดฆเดพเดนเดฐเดฃเด‚


เดฑเต‚เดŸเตเดŸเต เดชเดฐเดฟเดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด‰เดฆเดพเดนเดฐเดฃ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป HTTP เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต '/':

เดซเตเดฒเดพเดธเตเด•เต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดซเตเดฒเดพเดธเตเด•เต เดจเดฟเดจเตเดจเต
flask.ext.httpauth-เตฝ เดจเดฟเดจเตเดจเต HTTPBasicAuth เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•

เด†เดชเตเดชเต = เดซเตเดฒเดพเดธเตเด•เต(__เดชเต‡เดฐเต__)
auth = HTTPBasicAuth()

เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ = {
"เดœเต‹เตบ": "เดนเดฒเต‹",
"เดธเต‚เดธเตป": "เดฌเตˆ"
}

@auth.get_password
def get_pw(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚):
เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ:
เดฑเดฟเดŸเตเดŸเต‡เตบ users.get(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚)
เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ เดคเดฟเดฐเดฟเด•เต†

@app.route('/')
@auth.login_required
เดกเต†เดซเต เดธเต‚เดšเดฟเด•():
เดคเดฟเดฐเดฟเด•เต† "เดนเดฒเต‹, %s!" % auth.username()

__name__ == '__main__' เดŽเด™เตเด•เดฟเตฝ:
app.run ()

เดฆเดฟ เดจเต‡เดŸเตเด•_เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เต‹เตพเดฌเดพเด•เตเด•เต เดจเตฝเด•เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต
เดตเดพเดฆเด‚ เดชเต‹เดฒเต†. เดŽเด™เตเด•เดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ Flask-HTTPAuth เด†เด•เตโ€Œเดธเดธเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เต‚ get_password(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚) == เดชเดพเดธเตเดตเต‡เดกเต.

เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ เดนเดพเดทเต เดšเต†เดฏเตโ€Œเดคเต เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด…เดงเดฟเด• เด•เต‹เตพเดฌเดพเด•เตเด•เต เด†เดฃเต
เด†เดตเดถเตเดฏเดฎเตเดฃเตเดŸเต:

@auth.hash_password
def hash_pw(เดชเดพเดธเตโ€Œเดตเต‡เดกเต):
md5(เดชเดพเดธเตโ€Œเดตเต‡เดกเต) เดฎเดŸเด™เตเด™เตเด•.hexdigest()

เดŽเดชเตเดชเต‡เดพเดดเดพเดฃเต เดนเดพเดทเต_เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เต‹เตพเดฌเดพเด•เตเด•เต เดจเตฝเด•เตเดฎเตเดชเต‹เตพ เด†เด•เตเดธเดธเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚
get_password(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚) == hash_password(เดชเดพเดธเตโ€Œเดตเต‡เดกเต).

เดนเดพเดทเดฟเด‚เด—เต เด…เตฝเด—เต‹เดฐเดฟเดคเดคเตเดคเดฟเดจเต เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚ เด…เดฑเดฟเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ, เด•เต‹เตพเดฌเดพเด•เตเด•เดฟเดจเต เดฐเดฃเตเดŸเต†เดฃเตเดฃเด‚ เดŽเดŸเตเด•เตเด•เดพเด‚
เด’เดจเตเดจเดฟเดจเต เดชเด•เดฐเด‚ เดตเดพเดฆเด™เตเด™เตพ:

@auth.hash_password
def hash_pw(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚, เดชเดพเดธเตโ€Œเดตเต‡เดกเต):
get_salt(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚)
เดฑเดฟเดŸเตเดŸเต‡เตบ เดนเดพเดทเต (เดชเดพเดธเตโ€Œเดตเต‡เดกเต, เด‰เดชเตเดชเต)

เดเดฑเตเดฑเดตเตเด‚ เดซเตเดฒเต†เด•เตเดธเดฟเดฌเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตเด•เต เดจเต‡เดŸเตเด•_เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด’เดชเตเดชเด‚ เดนเดพเดทเต_เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เต‹เตพเดฌเดพเด•เตเด•เต เด†เด•เดพเด‚
เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟ verify_password:

@auth.verify_password
def verify_pw(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚, เดชเดพเดธเตโ€Œเดตเต‡เดกเต):
เดคเดฟเดฐเดฟเด•เต† call_custom_verify_function(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚, เดชเดพเดธเตโ€Œเดตเต‡เดกเต)

เดกเตˆเดœเดธเตเดฑเตเดฑเต เด…เด‚เด—เต€เด•เดพเดฐเด‚ เด‰เดฆเดพเดนเดฐเดฃเด‚


เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดฎเตเดฎเตเดชเดคเตเดคเต‡เดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ HTTP เดกเตˆเดœเดธเตเดฑเตเดฑเต เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚
เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดต:

เดซเตเดฒเดพเดธเตเด•เต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดซเตเดฒเดพเดธเตเด•เต เดจเดฟเดจเตเดจเต
flask.ext.httpauth-เตฝ เดจเดฟเดจเตเดจเต HTTPDigestAuth เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•

เด†เดชเตเดชเต = เดซเตเดฒเดพเดธเตเด•เต(__เดชเต‡เดฐเต__)
app.config['SECRET_KEY'] = 'เดฐเดนเดธเตเดฏ เด•เต€ เด‡เดตเดฟเดŸเต†'
auth = HTTPDigestAuth()

เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ = {
"เดœเต‹เตบ": "เดนเดฒเต‹",
"เดธเต‚เดธเตป": "เดฌเตˆ"
}

@auth.get_password
def get_pw(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚):
เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ:
เดฑเดฟเดŸเตเดŸเต‡เตบ users.get(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚)
เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ เดคเดฟเดฐเดฟเด•เต†

@app.route('/')
@auth.login_required
เดกเต†เดซเต เดธเต‚เดšเดฟเด•():
เดคเดฟเดฐเดฟเด•เต† "เดนเดฒเต‹, %s!" % auth.username()

__name__ == '__main__' เดŽเด™เตเด•เดฟเตฝ:
app.run ()

เดกเตˆเดœเดธเตเดฑเตเดฑเต เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เดซเตเดฒเดพเดธเตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• เดธเดฎเตเดฎเต‡เดณเดจเด‚ เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดฆเดฟ
เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ a เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ SECRET_KEY เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•.

เดŽเดชเดฟเด เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚


เด•เตเดฒเดพเดธเต flask_httpauth.HTTPBasicAuth
เดซเตเดฒเดพเดธเตเด•เต เดฑเต‚เดŸเตเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ HTTP เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดˆ เด•เตเดฒเดพเดธเต.

get_password(password_callback)
เดˆ เด•เต‹เตพเดฌเดพเด•เตเด•เต เดซเด‚เด—เตโ€Œเดทเตป เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚
เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดณเตเดณ เดชเดพเดธเตโ€Œเดตเต‡เดกเต. เด‰เดฆเดพเดนเดฐเดฃเด‚:

@auth.get_password
def get_password(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚):
db.get_user_password(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚) เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•

hash_password(hash_password_callback)
เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดˆ เด•เต‹เตพเดฌเดพเด•เตเด•เต เดซเด‚เด—เตโ€Œเดทเตป เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚
เด•เตเดฒเดฏเดจเตเดฑเต เดจเตฝเด•เตเดจเตเดจ เดชเดพเดธเตโ€Œเดตเต‡เดกเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดนเดพเดทเดฟเด‚เด—เต เด…เตฝเด—เต‹เดฐเดฟเดคเด‚. เด‡เดคเต เดŽเด™เตเด•เดฟเตฝ
เด•เต‹เตพเดฌเดพเด•เตเด•เต เดจเตฝเด•เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเต† เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด‚. เดคเดฟเดฐเดฟเดšเตเดšเตเดตเดฟเดณเดฟเด•เตเด•เตฝ
เด’เดจเตเดจเต‹ เดฐเดฃเตเดŸเต‹ เดตเดพเดฆเด™เตเด™เตพ เดŽเดŸเตเด•เตเด•เดพเด‚. เด’เดฐเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เดชเดคเดฟเดชเตเดชเดฟเดจเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเต
เดนเดพเดทเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดธเตโ€Œเดตเต‡เดกเต, เดฐเดฃเตเดŸเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เดชเดคเดฟเดชเตเดชเดฟเดจเต เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚ เดฒเดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดชเตเดชเด‚
เด† เด•เตเดฐเดฎเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดพเดธเตโ€Œเดตเต‡เดกเต. เดธเดฟเด‚เด—เดฟเตพ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เด•เต‹เตพเดฌเดพเด•เตเด•เต เด‰เดฆเดพเดนเดฐเดฃเด‚:

@auth.hash_password
def hash_password(password):
md5(เดชเดพเดธเตโ€Œเดตเต‡เดกเต) เดฎเดŸเด™เตเด™เตเด•.hexdigest()

เด‰เดฆเดพเดนเดฐเดฃเด‚ เดฐเดฃเตเดŸเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เด•เต‹เตพเดฌเดพเด•เตเด•เต:

@auth.hash_password
def hash_pw(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚, เดชเดพเดธเตโ€Œเดตเต‡เดกเต):
get_salt(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚)
เดฑเดฟเดŸเตเดŸเต‡เตบ เดนเดพเดทเต (เดชเดพเดธเตโ€Œเดตเต‡เดกเต, เด‰เดชเตเดชเต)

verify_password(verify_password_callback)
เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดˆ เด•เต‹เตพเดฌเดพเด•เตเด•เต เดซเด‚เด—เตโ€Œเดทเตป เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚
เด•เตเดฒเดฏเดจเตเดฑเต เดจเตฝเด•เตเดจเตเดจ เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดตเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเดจเตเด‚ เดธเดพเดงเตเดตเดพเดฃเต†เดจเตเดจเต.
เด•เต‹เตพเดฌเดพเด•เตเด•เต เดซเด‚เด—เตโ€Œเดทเตป เดฐเดฃเตเดŸเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต, เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดตเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ เด’เดชเตเดชเด‚
เดคเดฟเดฐเดฟเดšเตเดšเตเดตเดฐเดฃเด‚ เดŸเตเดฐเต‚ or เดคเต†เดฑเตเดฑเดพเดฏ. เด‰เดฆเดพเดนเดฐเดฃ เด‰เดชเดฏเต‹เด—เด‚:

@auth.verify_password
def verify_password(เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚, เดชเดพเดธเตโ€Œเดตเต‡เดกเต):
เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต = User.query.filter_by(username).first()
เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ:
เดคเต†เดฑเตเดฑเดพเดฏเดฟ เดฎเดŸเด™เตเด™เตเด•
passlib.hash.sha256_crypt.verify(password, user.password_hash) เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•

เดŽเดชเตเดชเต‹เตพ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• verify_password เด•เต‹เตพเดฌเดพเด•เตเด•เต เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดจเต‡เดŸเตเด•_เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด’เดชเตเดชเด‚
เดนเดพเดทเต_เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เต‹เตพเดฌเดพเด•เตเด•เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

error_handler(error_callback)
เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดˆ เด•เต‹เตพเดฌเดพเด•เตเด•เต เดซเด‚เด—เตโ€Œเดทเตป เด…เดคเต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เดตเดดเดฟ เดตเดฟเดณเดฟเด•เตเด•เตเด‚
เด•เตเดฒเดฏเดจเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดชเดฟเดถเด•เต เดคเดฟเดฐเดฟเด•เต† เด…เดฏเดฏเตเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดคเดฟเดฐเดฟเดšเตเดšเตเดตเดฐเดตเต
เดˆ เดซเด‚เด—เตโ€Œเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด‚ เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดชเตเดฐเดคเดฟเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดฌเต‹เดกเดฟ เด†เด•เดพเด‚
เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เด’เดฐเต เดชเตเดฐเดคเดฟเด•เดฐเดฃ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด‚ เด†เด•เดพเด‚ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด•_เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚. เดˆ เดคเดฟเดฐเดฟเดšเตเดšเตเดตเดฟเดณเดฟเดšเตเดšเดพเตฝ
เดจเตฝเด•เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เด’เดฐเต เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดชเดฟเดถเด•เต เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต. เด‰เดฆเดพเดนเดฐเดฃเด‚:

@auth.error_handler
def auth_error():
"<h1>เด†เด•เตโ€Œเดธเดธเต เดจเดฟเดฐเดธเดฟเดšเตเดšเต</h1>" เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•

login_required(view_function_callback)
เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเด•เตเดฎเตเดชเต‹เตพ เดˆ เด•เต‹เตพเดฌเดพเด•เตเด•เต เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด‚. เดˆ
เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต เดตเตเดฏเต‚ เดซเด‚เด—เตโ€Œเดทเตป เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เด‰เดฆเดพเดนเดฐเดฃเด‚:

@app.route('/private')
@auth.login_required
def private_page():
"เด…เด‚เด—เต€เด•เตƒเดค เด†เดณเตเด•เตพเด•เตเด•เต เดฎเดพเดคเตเดฐเด‚!"

เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚()
เดˆ เด•เตเดฒเดพเดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดฐเดฟเดฐเด•เตเดทเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดตเตเดฏเต‚ เดซเด‚เด—เตโ€Œเดทเดจเต เดฒเต‹เด—เต เดšเต†เดฏเตโ€Œเดคเดคเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚
เดˆ เดฐเต€เดคเดฟเดฏเดฟเดฒเต‚เดŸเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚. เด‰เดฆเดพเดนเดฐเดฃเด‚:

@app.route('/')
@auth.login_required
เดกเต†เดซเต เดธเต‚เดšเดฟเด•():
เดคเดฟเดฐเดฟเด•เต† "เดนเดฒเต‹, %s!" % auth.username()

เด•เตเดฒเดพเดธเต flask.ext.httpauth.HTTPDigestAuth
เดซเตเดฒเดพเดธเตเด•เต เดฑเต‚เดŸเตเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ HTTP เดกเตˆเดœเดธเตเดฑเตเดฑเต เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดˆ เด•เตเดฒเดพเดธเต. เดฆเดฟ SECRET_KEY
เดธเต†เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเตป เดซเตเดฒเดพเดธเตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดซเตเดฒเดพเดธเตเด•เต เด•เตเดฒเดฏเดจเตเดฑเดฟเดฒเตเดณเตเดณ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดธเต†เดทเดจเตเด•เดณเต† เดธเตเดฐเด•เตเดทเดฟเดค เด•เตเด•เตเด•เดฟเด•เดณเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ
เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเต เด•เตเด•เตเด•เดฟเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฃเด‚. เดตเต†เดฌเต เดฌเตเดฐเต—เดธเดฑเตเด•เตพ เด…เดฒเตเดฒเดพเดคเตเดค เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต
เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเดฟเดจเต เด•เตเด•เตเด•เดฟเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ a เดธเดฎเตเดฎเต‡เดณเดจเด‚ เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดŽเดจเตเดจเดคเดฟเตฝ เดธเต†เดทเดจเตเด•เตพ เดŽเดดเตเดคเตเดจเตเดจเต
เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚.

get_password(password_callback)
เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพเด•เตเด•เตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด•เดพเดฃเตเด•.

error_handler(error_callback)
เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพเด•เตเด•เตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด•เดพเดฃเตเด•.

login_required(view_function_callback)
เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพเด•เตเด•เตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด•เดพเดฃเตเด•.

เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚()
เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพเด•เตเด•เตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด•เดพเดฃเตเด•.

onworks.net เดธเต‡เดตเดจเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดซเตเดฒเดพเดธเตเด•เต-httpauth เด“เตบเดฒเตˆเดจเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•


เดธเต—เดœเดจเตเดฏ เดธเต†เตผเดตเดฑเตเด•เดณเตเด‚ เดตเตผเด•เตเด•เตเดธเตเดฑเตเดฑเต‡เดทเดจเตเด•เดณเตเด‚

Windows & Linux เด†เดชเตเดชเตเด•เตพ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•

เดฒเดฟเดจเด•เตเดธเต เด•เดฎเดพเตปเดกเตเด•เตพ

  • 1
    เด…เดญเดฟเดตเดพเดฆเตเดฏเด‚
    เด…เดญเดฟเดตเดพเดฆเตเดฏเด‚
    acdlog - เดŸเต†เดธเตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป ACD เดซเดฏเตฝ
    เดกเดพเดฑเตเดฑ เด˜เดŸเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต ...
    เด†เด•เตโ€Œเดฒเต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•
  • 2
    acdprettye
    acdprettye
    acdpretty - เดถเดฐเดฟเดฏเดพเดฏเดฟ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•
    เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป ACD เดซเดฏเตฝ...
    acdprettye เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•
  • 3
    cpufreq-เดธเต†เดฑเตเดฑเต
    cpufreq-เดธเต†เดฑเตเดฑเต
    cpufreq-set - เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด‰เดชเด•เดฐเดฃเด‚
    cpufreq เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต. เดตเดพเด•เตเดฏเด˜เดŸเดจ:
    cpufreq-set [เด“เดชเตเดทเดจเตเด•เตพ] DESCRIPTION:
    cpufreq-set เดจเดฟเด™เตเด™เดณเต† cpufreq เดชเดฐเดฟเดทเตเด•เดฐเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต
    เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚...
    cpufreq-set เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•
  • 4
    cpufreqd-get
    cpufreqd-get
    cpufreqd-get - เด‡เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ "เด—เต†เดฑเตเดฑเต" เดšเต†เดฏเตเดฏเตเดจเตเดจเต
    cpufreqd. เดตเดพเด•เตเดฏเด˜เดŸเดจ: cpufreqd-get [-l]
    เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ: -l เดฒเดฟเดธเตเดฑเตเดฑเต เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดš เดชเตเดฐเตŠเดซเตˆเดฒเตเด•เตพ
    เดŽเดฒเตเดฒเดพ cpus. เดตเดฟเดตเดฐเดฃเด‚: cpufreqd-get
    เดชเตเดฐเดถเตเดจเด™เตเด™เตพ ...
    cpufreqd-get เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•
  • 5
    g.gui.dbmgrgrass
    g.gui.dbmgrgrass
    g.gui.dbmgr - เด—เตเดฐเดพเดซเดฟเด•เตเด•เตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต
    เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดŸเต‡เดฌเดฟเตพ เดฎเดพเดจเต‡เดœเตผ. เด•เต€เดตเต‡เดกเตเด•เตพ:
    เดชเตŠเดคเตเดตเดพเดฏ, GUI, เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดชเดŸเตเดŸเดฟเด•, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต ...
    g.gui.dbmgrgrass เดฑเตบ เดšเต†เดฏเตเดฏเตเด•
  • 6
    g.gui.gcpgrass
    g.gui.gcpgrass
    g.gui.gcp - เด’เดฐเต เดฎเดพเดชเตเดชเต เดœเดฟเดฏเต‹เดฑเต†เด•เตเดฑเตเดฑเดฟเดซเตˆ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด’เดชเตเดชเด‚
    เด—เตเดฐเต—เดฃเตเดŸเต เด•เตบเดŸเตเดฐเต‹เตพ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.
    เด•เต€เดตเต‡เดกเตเด•เตพ: เดชเตŠเดคเตเดตเดพเดฏ, GUI,
    เดœเดฟเดฏเต‹เดฑเต†เด•เตเดฑเตเดฑเดฟเดซเดฟเด•เตเด•เต‡เดทเตป, เดœเดฟเดธเดฟเดชเดฟ ...
    g.gui.gcpgrass เดฑเตบ เดšเต†เดฏเตเดฏเตเด•
  • เด•เต‚เดŸเตเดคเตฝ "

Ad