有些api端点需要授权头中的访问令牌。我正在寻找一种方法,其中一些端点需要在标头中访问令牌。这些端点有一个用于authroization并单击该按钮的按钮,它应该命中oauth端点并生成访问令牌和刷新令牌。该访问令牌应自动添加到此请求和继续请求的标头中。如果访问令牌已过期,则应通过已保存的刷新令牌生成访问令牌。我相信我必须使用两种安全定义
securityDefinitions:
sample_auth:
type: oauth2
authorizationUrl: http://<auhtorizeationUrl>
tokenUrl: http://<tokenUrl>
flow: accessCode
scopes:
write: "modify sample in your account"
sample_api_key:
type: apiKey
in: header
name: Authorization
我的项目位于node.js.作为第一步,我尝试使用我的端点中的sample_api_key安全性在头文件中使用硬编码访问令牌。我在swagger-ui index.html
中使用了代码function addApiKeyAuthorization(){
console.log('key ');
var key = encodeURIComponent( $('.input_apiKey_entry')[0].value );
console.log('key '+key);
if(key && key.trim() != "") {
var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization( "Authorization", "Bearer " + key, "header" );
window.swaggerUi.api.clientAuthorizations.add( "sample_api_key", apiKeyAuth );
log( "Set bearer token: " + key );
}
}
$('.input_apiKey_entry').change(addApiKeyAuthorization);
并在我的swagger.yaml中添加了该特定端点 安全: - sample_api_key:[]
在swagger ui中,它为我提供了点击授权按钮,为我提供了在文本字段中添加Authroization值的选项。在authroizing之后,触发请求发送错误 { “message”:“未知安全处理程序:sample_api_key”, “code”:“server_error”, “statusCode”:403 }
node.js代码显示错误 错误:发送后无法设置标头。 在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:346:11) 在applyHeaders(/Volumes/Data/samplegit/sample-api/node_modules/cors/lib/index.js:146:15) at applyHeaders(/Volumes/Data/samplegit/sample-api/node_modules/node_modules/cors/lib/index.js:142:11) 在applyHeaders(/Volumes/Data/samplegit/sample-api/node_modules/node_modules/cors/lib/index.js:142:11)