Jak zaimplementować schemat logowania tylko po raz pierwszy dla mobilnej aplikacji internetowej zaimplementowanej z jQuery Mobile, PhoneGap i Django?

Jestem na wczesnym etapie (pre-coding) tworzenia mobilnej aplikacji webowej przy użyciu jQuery Mobile (przyglądaliśmy się Sencha Touch przez kilka tygodni, ale jQuery Mobile lepiej pasuje do kompetencji naszego zespołu). Ja owijam mobilną aplikację internetową jQuery z PhoneGap, aby utworzyć natywną aplikację na iPhone ' a, iPoda touch i iPada. Używam Django dla naszych aplikacji internetowych, więc zamierzam zrobić to samo tutaj po stronie serwera, z jakimś przepływem danych JSON / Ajax/REST dla interfejsu pomiędzy aplikacją mobilną a serwerem. Ponieważ jest to aplikacja mobilna, powinniśmy mieć dostęp do wszystkich HTML5 .

Podczas gdy prawdopodobnie wymyślę inne problemy / pytania dotyczące tej implementacji, oto moje obecne pytanie/problem:

Muszę skonfigurować aplikację tak, aby przy pierwszym otwarciu aplikacji użytkownik musiał wprowadzić nazwę użytkownika i hasło do uwierzytelnienia. Następnie użytkownik nie powinien uwierzytelnianie, chyba że użytkownik kliknie link "Ustawienia", który daje mu stronę do uwierzytelnienia przy użyciu innego konta lub hasła. Aplikacja powinna nadal uwierzytelniać się na serwerze przy każdym uruchomieniu, używając bieżącej nazwy użytkownika i hasła, które zostały pierwotnie wprowadzone, aby upewnić się, że konto nie zostało wyłączone lub hasło zmienione lub coś takiego.

Jestem całkiem nowy w schematach uwierzytelniania. Co mam zrobić?

Author: Peter Mortensen, 2011-06-04

6 answers

Odradzam Przechowywanie w HTML5 local / web storage. Jeśli kierujesz iOS PhoneGap, polecam użycie wtyczki Keychain: http://blogs.nitobi.com/shazron/2010/11/06/ios-keychain-plugin-for-phonegap/

 4
Author: Shazron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-05 08:47:49

Chociaż nie idziesz z Sencha Touch, jest całkiem dobry przegląd problemów na Uwierzytelnianie HTTP.

Jeśli chodzi o przechowywanie informacji uwierzytelniających po pierwszym zalogowaniu, możesz spróbować local storagelub cookie (chociaż może być konieczne użycie PhoneGap, aby włączyć przechowywanie plików cookie). HTML5 zapewnia również lokalny magazyn klienta z wartością klucza . Jeśli pliki cookie uwierzytelniające działają, wierzę, że mogą być obsługiwane automatycznie; w przeciwnym razie można zaimplementować sprawdzanie uwierzytelniania document.ready w wywołaniu Ajax przy użyciu danych uwierzytelniania z lokalnego magazynu (lub szyfrowanego magazynu).
 4
Author: A Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:14

Rozwiązanie pęku kluczy działa tylko na urządzeniach z systemem iOS, więc jeśli to twój jedyny cel, nic Ci nie jest.

Ale co z innymi? Rodzaj marnotrawstwa przy użyciu PhoneGap, ale potem wdrażanie tylko do jednego frameworka...

Wiem, że localStorage nie jest bezpieczny, ale jeśli jesteś świadomy ograniczeń, istnieją sposoby, aby trochę mniej "oczywiste".

Oto jQuery.wtyczka handleStorage , która obsługuje również szyfrowanie AES... Możesz rzucić okiem na źródło i wdrożyć tylko te części, których potrzebujesz (w przypadku, gdy nie chcesz używać całej wtyczki, która obsługuje również przeglądarki desktopowe!).

PS: nie jestem w żaden sposób powiązany z tą wtyczką ani z autorem

 4
Author: Leon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-29 09:48:28

To było jedno z palących pytań, które miałem, gdy zacząłem rozwój mobilny z PhoneGap. Pozwól mi wyjaśnić, co robię, aby przejść.

Gdy użytkownik spróbuje się zalogować, wprowadza nazwę użytkownika i hasło, które zostanie wysłane za pośrednictwem połączenia internetowego po stronie serwera. Jeśli uwierzytelnienie się powiedzie, wydaj użytkownikowi token i zapisz go po stronie serwera na potrzeby przyszłej komunikacji. Użytkownik otrzyma token i zostanie on zapisany w pamięci lokalnej lub cokolwiek innego mechanizm, który wolisz.

Teraz dla przyszłej komunikacji użyj tokenu, token zostanie przekazany przy każdym wywołaniu usługi web na stronę serwera, gdzie serwer uwierzytelni, czy token jest prawidłowym tokenem wystawionym przez serwer. Możesz unieważnić token co 72 godziny lub 48 godzin przed wymaganiem(lub nie wygasa). Po unieważnieniu tokenu będziesz musiał się zalogować i uzyskać nowy token.

Mam nadzieję, że to rozwiąże twój problem.

 1
Author: Techie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-01 16:58:17
 -1
Author: Frantzdy Romain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-16 14:46:54

Mówi, aby dołączyć plik PHP do pliku HTML, ale nie jestem pewien, czy PhoneGap działa z PHP. Właśnie zacząłem używać PhoneGap w ten weekend.

 -1
Author: Frantzdy Romain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-16 14:48:33