У меня есть веб-приложение, созданное с помощью jQuery Mobile и PHP (Framework CodeIgniter). Теперь я также пытаюсь сделать версию PhoneGap, чтобы сделать ее доступной как автономное приложение. Тем не менее, веб-приложение PHP. версия использует Ion Auth, плагин CodeIgniter для аутентификации. Поэтому, когда вы переходите на страницу, требующую аутентификации, приложение перенаправляет вас к методу входа в контроллер проверки подлинности. И после аутентификации он перенаправляет вас обратно на домашнюю страницу (в этом случае на странице jQuery Mobile). Это прекрасно работает в веб-приложении. Так как домашняя страница в любом случае открыта домашним контроллером.Аутентификация в jQuery Mobile и PhoneGap
Но вот суть: в версии PhoneGap домашняя страница должна быть файлом index.html в PhoneGap. Очевидно, вы можете загрузить другой URL-адрес при запуске, добавив значение в PhoneGap.plist, но это неприемлемо для Apple для отправки в магазин приложений. И если я сделаю переадресацию в аутентификации, я не могу вернуться к файлу index.html после аутентификации ...
Итак, как следует обходить аутентификацию в мобильном приложении PhoneGap/jQuery?
UPDATE:
Я попытался это в соответствии с одним из ответов, но приложение все еще пытается перейти на страницу аккаунта/авторизации (который не существует), когда я просто хочу, чтобы войти в систему через отправлять и возвращает значение из метода:
$('#login_form').bind('submit', function() {
event.preventDefault();
//send a post request to your web-service
$.post('http://localhost/app_xcode/account/login', $(this).serialize(), function (response) {
//parse the response string into an object
var response = response;
//check if the authorization was successful or not
if (response == true) {
$.mobile.changePage('#toc', "slide");
} else {
alert('login failed');
$.mobile.changePage('#toc', "slide");
}
});
});
Вот метод контроллера:
function login()
{
//validate form input
$this->form_validation->set_rules('identity', 'Identity', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$base_url = $this->config->item('base_url');
$mobile = $this->detect_mobile();
if ($mobile === false && $base_url != 'http://localhost/app_xcode/') //Only restrict if not developing
redirect('account/notAMobile');
else if ($this->form_validation->run() == true) { //check to see if the user is logging in
//check for "remember me"
$remember = (bool)$this->input->post('remember');
if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember)) { //if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
echo true;
/*redirect($this->config->item('base_url'), 'refresh');*/
}
else
{ //if the login was un-successful
//redirect them back to the login page
$this->session->set_flashdata('message', $this->ion_auth->errors());
/*redirect('account/login', 'refresh');*/ //use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
else
{ //the user is not logging in so display the login page
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors()
: $this->session->flashdata('message');
$this->data['identity'] = array('name' => 'identity',
'id' => 'identity',
'type' => 'text',
'value' => $this->form_validation->set_value('identity'),
);
$this->data['password'] = array('name' => 'password',
'id' => 'password',
'type' => 'password',
);
}
}
Я думаю, что я удалил или комментировал любые редиректы, которые были там. Поэтому я не знаю, почему он пытается загрузить представление еще? Имеет ли он какое-то отношение к jQuery Mobile, пытающееся перейти туда, потому что я отправляю на этот URL-адрес?
Хорошо, спасибо. На самом деле это не веб-сервис, а просто плагин для CodeIgniter. Тем не менее, у меня есть что-то вроде вашего примера.Единственная проблема заключается в том, что когда я отправляю аккаунт/логин (метод входа в контроллер учетной записи), он входит в систему, но также пытается перейти к учетной записи/логину просмотра. Я не хочу этого. Я просто хочу вернуть значение (я повторяю его в методе входа), но даже при возврате значения он все равно пытается перейти на страницу входа ... См. Мое обновление. – Anders
Я понял, так что теперь он работает. Благодарю. – Anders
Итак, люди, которые видят это в будущем, знают, каково было ваше решение? – Jasper