2015-09-22 2 views
3

Я хочу добавить основную авторизацию в swagger-ui, чтобы проверить мой WS с кнопкой «Попробовать». Я пробовал от swagger documentation, и этот вопрос Adding Basic Authorization for Swagger-UI, но никто не работает. В запросе не добавляется заголовок, но в команде curl присутствует основной заголовок авторизации. Если я скопирую эту команду curl, все в порядке.swagger-ui: Добавить заголовок авторизации не работает

My swagger-ui version is 2.1.2. Я загрузил из github, ant put прямо в папку dist в статической папке моего сервера.

Вот мой index.html:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Sensor API documentation</title> 
<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" /> 
<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" /> 
<link href='css/typography.css' media='screen' rel='stylesheet' type='text/css' /> 
<link href='css/reset.css' media='screen' rel='stylesheet' type='text/css' /> 
<link href='css/screen.css' media='screen' rel='stylesheet' type='text/css' /> 
<link href='css/reset.css' media='print' rel='stylesheet' type='text/css' /> 
<link href='css/print.css' media='print' rel='stylesheet' type='text/css' /> 
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script> 
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script> 
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script> 
<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script> 
<script src='lib/handlebars-2.0.0.js' type='text/javascript'></script> 
<script src='lib/underscore-min.js' type='text/javascript'></script> 
<script src='lib/backbone-min.js' type='text/javascript'></script> 
<script src='swagger-ui.js' type='text/javascript'></script> 
<script src='lib/highlight.7.3.pack.js' type='text/javascript'></script> 
<script src='lib/marked.js' type='text/javascript'></script> 
<script src='lib/swagger-oauth.js' type='text/javascript'></script> 

<!-- Some basic translations --> 
<!-- <script src='lang/translator.js' type='text/javascript'></script> --> 
<!-- <script src='lang/ru.js' type='text/javascript'></script> --> 
<!-- <script src='lang/en.js' type='text/javascript'></script> --> 

<script type="text/javascript"> 
    $(function() { 

     // Pre load translate... 
     if (window.SwaggerTranslator) { 
      window.SwaggerTranslator.translate(); 
     } 
     window.swaggerUi = new SwaggerUi({ 
      url : "/swagger/json/SensorAPI.json", 
      validatorUrl : "", 
      dom_id : "swagger-ui-container", 
      supportedSubmitMethods : [ 'get', 'post', 'put', 'delete', 'patch' ], 
      onComplete : function(swaggerApi, swaggerUi) { 

       if (window.SwaggerTranslator) { 
        window.SwaggerTranslator.translate(); 
       } 

       $('pre code').each(function(i, e) { 
        hljs.highlightBlock(e) 
       }); 
       addAuthorization(); 

      }, 
      onFailure : function(data) { 
       log("Unable to Load SwaggerUI"); 
      }, 
      docExpansion : "none", 
      apisSorter : "alpha", 
      showRequestHeaders : false 
     }); 

     function addAuthorization() { 
      var username = $('#input_username').val(); 
      var password = $('#input_password').val(); 
      if (username && username.trim() != "" && password && password.trim() != "") { 
       var basicAuth = new SwaggerClient.PasswordAuthorization(username, password); 
       window.swaggerUi.api.clientAuthorizations.add('Basic', basicAuth); 
       log("authorization added: username = " + username + ", password = " + password); 
      } else { 
       window.authorizations.remove(); 
      } 
     } 
     $('#input_username').change(addAuthorization); 
     $('#input_password').change(addAuthorization); 
     // pre-populate on the page using demo account 
     $('#input_username').val("demo"); 
     $('#input_password').val("demo"); 

     window.swaggerUi.load(); 

     function log() { 
      if ('console' in window) { 
       console.log.apply(console, arguments); 
      } 
     } 
    }); 
</script> 
</head> 

<body class="swagger-section"> 
    <div id='header'> 
     <div class="swagger-ui-wrap"> 
      <a id="logo" href="http://swagger.io">swagger</a> 
      <form id='api_selector'> 
       <div class='input'> 
        Username: <input placeholder="username" id="input_username" name="username" type="text" size="10" /> 
       </div> 
       <div class='input'> 
        Password: <input placeholder="password" id="input_password" name="password" type="password" size="10" /> 
       </div> 
      </form> 
     </div> 
    </div> 

    <div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div> 
    <div id="swagger-ui-container" class="swagger-ui-wrap"></div> 
</body> 
</html> 

Пожалуйста, скажите мне, что это неправильно. Спасибо

ответ

3

Я нашел: проблема исходила из моих json-файлов. Я определил много «securityDefinitions», один за роли пользователя

..., 
"securityDefinitions":{ 
    "administrator":{ 
     "type":"basic", 
     "description":"The administrator." 
    }, 
    "supervisor":{ 
     "type":"basic", 
     "description":"A supervisor." 
    }, 
    "customer":{ 
     "type":"basic", 
     "description":"A customer." 
    } 
}, 
... 

и для каждого WS, я указать, какие роли разрешается. Например:

..., 
"get":{ 
    "security":[ 
     { 
      "administrator":[ 

      ] 
     }, 
     { 
      "supervisor":[ 

      ] 
     } 
    ], 
    ... 
}, 
... 

Удаляя раздел безопасности в WS, все работает.

В редакторе развязности, нам нужен раздел по безопасности для тестирования WS, но в развязности щий, в этом разделе вызвать ошибку :-(

+0

Того же проблемы, как вы мне сообщили о проблеме здесь:. Https: // GitHub. ком/чванство-API/чванство-UI/вопросы/1835 – hiveship

Смежные вопросы