11

わかった。エンタープライズ Web アプリ用の Android アプリの開発を開始しました。ログイン画面アクティビティの設計を開始しました。

このアプリは RESTFul API によって完全に駆動されます。

アプリケーションでログイン/ログアウト機能を開発する方法を理解したいです。私の知る限り、アプリの世界にはセッションの概念はありません。また、API の場合、リクエストごとにユーザー名とパスワードを送信する必要があります (基本認証)。どうやら、ログイン認証情報をローカル ストレージのどこかに保持して、すべてのリクエストとともに送信する必要があるようです。

Androidの基本的な知識から私が理解していることは次のとおりです。

ユーザーがログイン情報を入力してボタンを押すと、API への HTTP 呼び出しが開始されます。ログイン資格情報が有効な場合は、資格情報をローカルに保存する必要があります。オプションは

  1. SQLite
  2. 共有設定。(私はそれを使用したことはありません。しかし、私はこれを使用できると仮定しています)
  3. バンドル (オプションかどうかは不明)

他の選択肢はありますか?

パフォーマンスとアーキテクチャの観点から犠牲にすることなく、ベスト プラクティスに従うようにしたいと考えています。

ログアウトの場合は、ローカルに保存されている資格情報を消去して、ログイン アクティビティを表示するだけでよいと思います。

別のより良いアプローチはありますか?

4

4 に答える 4

13

Androidアカウント機能を利用することをお勧めします。

このブログには、組み立てる必要があるすべてのビットについての非常に優れたステップバイステップガイドがあります.

一般的な考え方は、AccountManagerにユーザーのユーザー名/パスワードを提供し、AccountManager に任せてそれらを安全に保存することです。

認証トークンが必要な場合は、AccountManager に要求すると、キャッシュされたトークンが返されるか、コードにコールバックされ (ユーザー名/パスワードを渡す)、認証サービスを呼び出して新しいトークンを取得します。 .

于 2012-08-29T05:09:15.230 に答える
2

SharedPreferencesパスワードをアプリに保存するのは悪い考えだと思います。より良いアプローチは、ユーザーがログインして初めてサーバーにアクセストークンを返すときにユーザー資格情報を使用してリクエストを作成し、ユーザーの詳細を取得するなどの残りの目的のためにこのアクセストークンを保存することです。 .
Session : セッションを維持するための独自のクラスを作成します。Hackbookはその良い例です。

于 2012-08-29T04:58:24.247 に答える
2

SharedPreferences通常、Android でデータを永続化するには、SQLite、 .、および Java I/O によるファイルへの読み取り/書き込みの3 つの方法があります。SQLite はリレーショナル データに最適ですが、ユーザーの資格情報を保存する必要があるだけなので、SharedPreferences を使用することをお勧めします。単純なキー値データ モデルのように思えます。

SharedPreferencesつまり、基本的な実装は依然としてファイルの読み取りと書き込みですが、キーと値のペアについては単純化されています。暗号化についてはよくわかりませんが、パスワードをSharedPreferencesオブジェクトに保存する前に自分で処理する必要があるかもしれません (JaiSoni の提案も考慮してください: 代わりにアクセス トークンを使用してください)。ただし、 を作成してSharedPreferencesに設定するとMODE_PRIVATE、他のアプリは共有設定ファイルにアクセスできなくなりますのでご安心ください。

これはほぼ標準的な実装だと思います。このページを見ると、実際にできることは限られています: http://developer.android.com/guide/topics/data/data-storage.html

ダイレクト ファイル I/O の複雑さの 1 つは、ファイルを保存する場所 (内部メモリまたは外部メモリ (SD カードなど)) を決定する必要があることです。可用性 (すべてのデバイスに SD カード スロットがあるわけではなく、内部メモリが外部メモリとしてデバイスに登録される場合があります)。したがって、共有設定を使用してください。

ログアウトするには、これが役立つ場合があります:共有設定の削除

于 2012-08-29T04:36:36.083 に答える
0

ログイン資格情報をファイルまたはデータベースに永続化する必要があるのはなぜですか? アプリの再起動後に自動的にログインしますか? 永続性が必要ない場合は、資格情報を静的 Java メンバーに入れることができます。

于 2012-08-29T05:11:28.453 に答える