2017-07-06 81 views
1

我想通过HTTP(已安装readonlyrest插件)登录到我的ElasticSearch。通过JavaScript将HTTP客户端登录到ElasticSearch(readonlyrest)

¿是否有任何方式使用HTML表单和JavaScript(Angular)代码来完成这件事?

<form class="form-horizontal"> 
     <div class="form-group"> 
     <label class="control-label col-sm-2" for="email">Username:</label> 
     <div class="col-sm-10"> 
      <input class="form-control" ng-model="username" placeholder="Enter username"> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="control-label col-sm-2" for="pwd">Password:</label> 
     <div class="col-sm-10"> 
      <input type="password" class="form-control" placeholder="Enter password" ng-model="password"> 
     </div> 
     </div> 
     <div class="form-group"> 
     <div class="col-sm-offset-2 col-sm-10"> 
      <button type="submit" class="btn btn-default" ng-click="login()">Submit</button> 
     </div> 
     </div> 
</form> 

登录的代码(我想保存登录在浏览器未来行动):

$scope.login = function(){ 
console.log("Login: ", $scope.username, $scope.password) 

var clientId = "sample"; 
var clientSecret = "sample"; 

var authorizationBasic = window.btoa(clientId + ':' + clientSecret); 

var request = new XMLHttpRequest(); 
request.open('POST', "https://localhost:5601/omu/elasticsearch/_msearch", true); 
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
request.setRequestHeader('Authorization', 'Basic ' + authorizationBasic); 
request.setRequestHeader('Accept', 'application/json'); 
request.send("username=sample&password=sample&grant_type=password"); 

request.onreadystatechange = function() { 
    if (request.readyState === 4) { 
     alert(request.responseText); 
    } 
}} 

THX

回答

0

如果您使用基本身份验证,尝试包括凭证路径

GET http:// user:password @elastichost:9200/endpoint

+0

使用readonlyrest,GET不需要用户名和密码。我想用Javascript登录并在浏览器中保存该登录信息以备将来使用。 –