如何在没有邮递员的情况下传递令牌

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"

【讨论】:

以上是关于如何在没有邮递员的情况下传递令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Axios 中传递 Bearer 令牌

如何在没有声明的情况下在api之间保存令牌?

如何将承载令牌添加到 HTTP 请求的标头?

如何在不请求通知权限的情况下获取 Firebase 云消息传递的注册令牌?

如何在 Jmeter 中传递表单数据值?

如何在 laravel 中使用不记名令牌从 api 请求中获取响应?