45

現在、ユーザーが最初にログインする必要があるWebベースのアプリケーションを開発しています。

iPhone Safariでページを開き、ログインしてSafariを再起動しても、ログインしたままです(CookieとセッションIDは設定されたままです)。

しかし、「ホーム画面に追加」でこのページを追加すると、そのページのアイコンをクリックするたびに、再度ログインする必要があります。

それについての情報は見つかりませんでした。ユーザーがこのページをアイコンとしてホーム画面に設定し、それでも開くたびにログインする必要がないようにするにはどうすればよいですか?

4

4 に答える 4

14

非常に簡単な方法は、一意のデバイス ID として機能する Bookmark-URL で一意のトークンを使用することです。

例: http://myWebApp.com/?token=randomId29238/1

トークンは、Mobile Safari でアプリケーションを開いたとき、ユーザーが「ホーム画面に追加」情報を求める前に、サーバー側で生成できます。その後、クイック リダイレクト (…&token=randomToken) またはロケーション ハッシュ (…#randomToken) を使用して、トークンを URL に追加できます。

ホーム画面からブックマークを開くたびに、トークンがサーバーに送信され、ユーザーのアクティブなセッションを識別できます。トークンを永続的なセッション ID として使用することもできますが、セキュリティ上の懸念から使用しないことをお勧めします。

将来のログアウトおよびログイン手順を可能にするために、いつでも新しいセッションをトークンに割り当てることができます。

トークンは、ユーザーがホーム画面からリンクを再度開くたびに、一意のデバイス識別子として機能します。

于 2011-12-31T16:29:16.170 に答える
14

favoよりも簡単で、いも、よりエレガントなソリューションがあります。

少なくとも iOS 4.2.1、5.1.1、6.0、および 6.1 (他のバージョンはテストできませんでした) では、セッション Cookie の有効期間を手動で延長すると、Safari はセッション Cookie を保持し、共有も許可します。 Web アプリの「ホーム画面にインストールされた」バージョンと、Safari 自体を介した通常のアクセスとの間のセッション。

トリックはこれを行うことです:

// Start or resume session
session_start(); 

// Extend cookie life time by an amount of your liking
$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
setcookie(session_name(),session_id(),time()+$cookieLifetime);

この戦略のより詳細な議論については、この質問に対する私の回答をご覧ください。

iPhone の Web アプリで PHP セッションを維持する

于 2013-01-30T00:59:22.397 に答える
3

There are persistent key-value storage and database storage available for web apps. You can save your authentication data using localStorage object and use XMLHttpRequest to send it to the server. Another option is saving your persistent data in a SQLite database, however this doesn’t seem to be a proper solution in your case. Check out Apple’s Client-Side Storage and Offline Applications Programming Guide for details/examples.

于 2010-10-04T12:31:32.670 に答える