2017-09-06 38 views
2

得到JSON网络令牌我有app.py下面的代码:无法从瓶

from flask import Flask 
from flask_jwt import JWT, jwt_required, current_identity 
from werkzeug.security import safe_str_cmp 

class User(object): 
    def __init__(self, id, username, password): 
     self.id = id 
     self.username = username 
     self.password = password 

    def __str__(self): 
     return "User(id='%s')" % self.id 

users = [ 
    User(1, 'user1', 'abcxyz'), 
    User(2, 'user2', 'abcxyz'), 
] 

username_table = {u.username: u for u in users} 
userid_table = {u.id: u for u in users} 

def authenticate(username, password): 
    user = username_table.get(username, None) 
    if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): 
     return user 

def identity(payload): 
    user_id = payload['identity'] 
    return userid_table.get(user_id, None) 

app = Flask(__name__) 
app.debug = True 
app.config['SECRET_KEY'] = 'super-secret' 

jwt = JWT(app, authenticate, identity) 

@app.route('/protected') 
@jwt_required() 
def protected(): 
    return '%s' % current_identity 

if __name__ == '__main__': 
    app.run() 

当我尝试做一个POST请求,以获得从邮差的身份验证令牌: http://127.0.0.1:5000/auth

{ “用户名”:“乔”, “密码”:“通” }

我得到一个特殊的错误,我不能够解决:

(flask-restful) C:\Users\bhatsubh\Projects\flask-restful>python Test.py 
* Restarting with stat 
* Debugger is active! 
* Debugger PIN: 973-755-004 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 
127.0.0.1 - - [06/Sep/2017 13:38:08] "POST /auth HTTP/1.1" 500 - 
Traceback (most recent call last): 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1997, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\_compat.py" 
, line 33, in reraise 
    raise value 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\_compat.py" 
, line 33, in reraise 
    raise value 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask\app.py", li 
ne 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "C:\Users\bhatsubh\Envs\flask-restful\lib\site-packages\flask_jwt\__init_ 
_.py", line 115, in _default_auth_request_handler 
    username = data.get(current_app.config.get('JWT_AUTH_USERNAME_KEY'), None) 
AttributeError: 'NoneType' object has no attribute 'get' 

我完全不知道发生了什么问题。有人可以帮助我吗?

+0

这是一个已知的bug,请参阅https://github.com/mattupstate/flask-jwt/issues/80 –

+0

该扩展没有维护,与Flask 0.12不兼容,请参阅https://github.com/mattupstate/flask-jwt/issues/104 –

回答

1

确保选中已设置正确的头

内容类型:应用程序/ JSON

尝试卷曲的交叉检查

$ curl -H "Content-Type: application/json" -X POST -d '{ "username": "joe", "password": "pass" }' http://localhost:5000/auth