デコレーターでルートにアクセスしようとすると@auth.login_required
、ユーザー名とパスワードを入力するウィンドウが表示されます。この情報を入力すると、関数のパラメータusername_or_token
とは になります。データが空なのはなぜですか?password
verify_password
''
@auth.verify_password
def verify_password(username_or_token, password):
# first try to authenticate by token
user = USER.verify_auth_token(username_or_token)
logger.debug("user = %r", user)
logger.debug("Entered USEREMAIL = %r" , username_or_token)
logger.debug("entered password = %r" , password)
if not user:
# try to authenticate with username/password
user = session.query(USER).filter_by(USEREMAIL=username_or_token).first()
if not user or not user.verify_password(password):
return False
g.user = user
return True
アップデート
コードを次のように簡略化しました。
@auth.verify_password
def verify_password(username, password):
logger.debug("username = %s" % username)
logger.debug("password = %s" % password)
return true
@app.route('/api/token')
@auth.login_required
def get_auth_token():
return "Hello, %s!" % auth.username()
を使用してこの機能をテストしていAdvanced Rest Client
ます。
http://localhost:8081/myapp/api/token
Authorization
ヘッダーも付けました。
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
Authorization: Basic YXNkOmFzZA==
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh-TW;q=0.4
これにより、次の出力が得られます。
Hello, !
ログ ファイル:
username =
password =
また、入力を求められることもありませsecurity credentials
ん。
もう 1 つの奇妙な点は、 return をfalse
inに変更してもverify_password
、同じ出力が得られることです。Hello, !