Я пытался разработать аутентификацию на основе адаптера для приложения, и я не совсем уверен, почему здесь не срабатывает обработчик вызовов.
main.js на стороне клиента:
var AuthenticationHandler = WL.Client.createChallengeHandler("EventAuthRealm");
AuthenticationHandler.isCustomResponse = function(response) {
if (!response || !response.responseJSON || response.responseText === null) {
return false;
}
if (typeof(response.responseJSON.authStatus) !== 'undefined') {
return true;
} else {
return false;
}
};
AuthenticationHandler.handleChallenge = function(response) {
var authRequired = response.responseJSON.authRequired;
if (authRequired == false) {
WL.logger.debug("done");
busyIndicator.hide();
AuthenticationHandler.submitSuccess();
toEventList(); //function to navigate to next page
} else if (authRequired == true) {
WL.logger.debug("false");
busyIndicator.hide();
AuthenticationHandler.submitFailure();
WL.Logger.debug(response.responseJSON.errorMessage);
}
};
Функция входа:
function login() {
var reg = $("#attendeeId").val();
var userpw = $("#attendeePw").val();
busyIndicator.show();
var invocationData = {
adapter: "eventdbAdapter",
procedure: "submitAuthentication",
parameters: [reg, userpw]
};
AuthenticationHandler.submitAdapterAuthentication(invocationData, {});
};
HTML-код страницы входа:
<div data-role="page" id="eventloginpage">
<div data-role="header" align="center" data-theme="b">Event app</div>
<div data-role="content" style="padding: 15px" id="wat">
<input type="text" name="attId" id="attendeeId" placeholder="Attendee ID">
<input type="password" name="password" id="attendeePw" placeholder="Attendee Password">
<!-- Buttons here -->
<a href="#" data-role="button" id="loginButton" data-theme="b" onclick="login();">Login</a>
<a href="#" data-role="button" id="button" onclick="logout();">Logout for now</a>
</div>
<div data-role="footer" align="center">Text</div>
</div>
Если это может быть связано, я создал многостраничный компонент приложения, следуя руководству, в котором используется изменение контейнера страниц.
Пример:
function toEventList() {
$(':mobile-pagecontainer').pagecontainer('change', 'eventpage.html');
}
Всякий раз, когда я выполняю функцию входа в систему, все работает по назначению до тех пор, пока не будет вызвана submitAdapterAuthentication.
Консоль Google Dev возвращает тайм-аут по запросу. При выполнении приложения на Android-устройстве Logcat отображает код состояния 201. Я могу только предположить, что объект успешно создан с использованием информации, собранной из полей, однако обработчик вообще не отправляет учетные данные.
Мы будем очень признательны за любые советы. Заранее извиняюсь, если мой пост покажется глупым, так как у меня нет достаточного опыта работы с MobileFirst и веб-технологиями в целом.