如何在没有邮递员的情况下传递令牌
Posted
技术标签:
【中文标题】如何在没有邮递员的情况下传递令牌【英文标题】:How to pass a token without postman 【发布时间】:2020-09-24 08:01:40 【问题描述】:我正在使用flask和jwt在android中构建一个应用程序; 我如何将令牌传递给路线? 这是我的登录信息:
@app.route('/login', methods=['POST'])
def login_user():
user_info = request.get_json()
user_obj = User.query.filter_by(username = user_info['username']).first()
if user_obj is not None:
if user_info['password'] == user_obj.password:
token = create_access_token(identity = user_obj.username)
return jsonify('access_token':token)
还有我的受保护路线:
@app.route('/jwt/users', methods = ['GET'])
@jwt_required
def get_all_users():
current_user = get_jwt_identity()
return jsonify("result": current_user)
现在如何在没有邮递员的情况下将登录时创建的令牌传递给受保护的路由?我使用 android studio 作为客户端。
这是我的 app.config:
app.config['JWT_TOKEN_LOCATION'] = ['headers', 'query_string']
app.config['JWT_SECRET_KEY'] = 'this-is-the-secret-key'
(稍后会更改密钥)
【问题讨论】:
【参考方案1】:将令牌作为header
的一部分传递给受保护的端点。
看例子here
$ curl http://localhost:5000/protected
"msg": "Missing Authorization Header"
$ curl -H "Content-Type: application/json" -X POST \
-d '"username":"test","password":"test"' http://localhost:5000/login
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6dHJ1ZSwianRpIjoiZjhmNDlmMjUtNTQ4OS00NmRjLTkyOWUtZTU2Y2QxOGZhNzRlIiwidXNlcl9jbGFpbXMiOnt9LCJuYmYiOjE0NzQ0NzQ3OTEsImlhdCI6MTQ3NDQ3NDc5MSwiaWRlbnRpdHkiOiJ0ZXN0IiwiZXhwIjoxNDc0NDc1NjkxLCJ0eXBlIjoiYWNjZXNzIn0.vCy0Sec61i9prcGIRRCbG8e9NV6_wFH2ICFgUGCLKpc"
$ export ACCESS="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6dHJ1ZSwianRpIjoiZjhmNDlmMjUtNTQ4OS00NmRjLTkyOWUtZTU2Y2QxOGZhNzRlIiwidXNlcl9jbGFpbXMiOnt9LCJuYmYiOjE0NzQ0NzQ3OTEsImlhdCI6MTQ3NDQ3NDc5MSwiaWRlbnRpdHkiOiJ0ZXN0IiwiZXhwIjoxNDc0NDc1NjkxLCJ0eXBlIjoiYWNjZXNzIn0.vCy0Sec61i9prcGIRRCbG8e9NV6_wFH2ICFgUGCLKpc"
$ curl -H "Authorization: Bearer $ACCESS" http://localhost:5000/protected
"logged_in_as": "test"
【讨论】:
以上是关于如何在没有邮递员的情况下传递令牌的主要内容,如果未能解决你的问题,请参考以下文章