まず、私はプロではありません。
より良い開発者になるための探求では、Ionic-Frameworkアプリのサインアップ/ログインを作成する方法と必要なものを理解しようとしています。
ほとんどの単一ページアプリケーション(SPA)は、クライアントのHTMLも提供しているノードサーバーで認証を処理します。私の場合、電話自体がHTMLを提供するので、CORの問題に直面する可能性があります。
Ionic-Frameworkは状態を使用し、ベースの angular-client-side-auth repoであることを理解しています。アプリの状態を変更するたびに認証を行う必要があります。
私は最初のアプリのセットアップを持っていますが、ここからどこへ行くのかちょっと混乱しています。
私が自由に使えるツール:
私の質問:
私がより良い開発者になるのを助けてくれてありがとう。
OK、答えがたくさんあります。ただし、簡単な答えは、通常のWebアプリと同じように、物事をシンプルに保ち、認証することです。
通常のWebアプリの場合:
モバイルアプリの場合:
標準的なアプローチは何ですか?
Node.JSをデータベースのプロキシとして使用する必要がありますか?
私はこれについて間違った方向に進んでいますか?
私の潜在的なロードブロッキングは何ですか?
CORSはハイブリッドアプリケーションでどのように機能しますか?
不足しているものは何ですか?
IonicFramework は単なるフロントエンドHTML5フレームワークです。それだけでは、モバイルアプリにすることはできません。 IonicFrameworkは、Angularを使用して実装するニース javascript機能 を提供します。したがって、ionicを最大限に活用するには、angularJsに習熟する必要があります。学習angularは努力する価値があります。
実際のアプリはCordovaによってコンパイルされます。 Cordovaは通常のhtml/css/javascriptファイルを取得し、それらをAndroid apkまたはiphone ipaにパッケージ化して、ネイティブアプリとしてそれぞれのOSにインストールできるようにします。
Cordovaは、カメラ、ギャラリー、連絡先などのネイティブの電話機能にアクセスできるようにするものです。
トークンベースの認証:私は代替手段であると信じています。これは、認証を処理するためのよりクリーンで安全な方法であり、簡単に利用できるようになりました。
詳細については、次のリンクをご覧ください。
トークンベースのアプローチを使用する利点は何ですか?
クロスドメイン/ CORS:Cookie + CORSは、異なるドメイン間でうまく機能しません。トークンベースのアプローチにより、HTTPヘッダーを使用してユーザー情報を送信するため、任意のドメインで任意のサーバーに対してAJAX呼び出しを行うことができます。ステートレス(別名サーバー側のスケーラビリティ):なしセッションストアを保持する必要がある場合、トークンはすべてのユーザー情報を伝達する自己完結型のエンティティであり、残りの状態はクライアント側のCookieまたはローカルストレージに存在します。
CDN:CDNからアプリのすべてのアセット(javascript、HTML、画像など)を提供でき、サーバー側はAPI。分離:特定の認証スキームに縛られていません。トークンはどこでも生成される可能性があるため、これらの呼び出しを認証する単一の方法で、どこからでもAPIを呼び出すことができます。
モバイル対応:ネイティブプラットフォーム(iOS、Android、Windows 8など)で作業を開始するとき、安全なAPIを使用する場合、Cookieは理想的ではありません( Cookieコンテナを処理する必要があります)。トークンベースのアプローチを採用すると、これが大幅に簡素化されます。 CSRF:Cookieに依存していないため、クロスサイトリクエストから保護する必要はありません(たとえば、サイトでそれを行うことはできません。POSTリクエストを生成し、存在しないため、既存の認証Cookie)。
パフォーマンス:ここではハードなパフォーマンスベンチマークを提示していませんが、ネットワークラウンドトリップ(データベースでセッションを見つけるなど)は計算よりも時間がかかる可能性がありますトークンを検証し、その内容を解析するHMACSHA256.
ログインページは特別なケースではありません:Protractorを使用して機能テストを記述する場合、ログインのために特別なケースを処理する必要はありません。標準ベース:APIは標準のJSON Web Token(JWT)を受け入れることができます。これは標準であり、複数のバックエンドライブラリ(.NET、Ruby、Java、Python、PHP)とインフラストラクチャを支援する企業(例:Firebase、Google、Microsoft)があります。例として、Firebaseでは、特定の定義済みプロパティを使用してJWTを生成し、共有シークレットで署名してAPIを呼び出す限り、顧客は任意の認証メカニズムを使用できます。
nathvarunは非常に完全な答えを出しましたが、アプリで認証のために行う手順を共有したいと思います。
email
+ password
をajax経由でサーバーに送信しますtoken
を生成し、アプリに送り返しますemail
にtoken
+ localStorage
を保存email
経由でtoken
+ POST
を送信しますtrue
メソッドが実行された場合、false
場合、アプリにエラーを返します(401)良いことは、アプリが開いているときに、email
+ token
をlocalStorage
から取得し、サーバーに送信できることです。そのトークンがそのユーザーにとって問題なければ、リダイレクトしますそれ以外の場合は、ログインにリダイレクトします。その後、ユーザーがアプリのキャッシュをクリアするたびに、ログイン画面にリダイレクトされます。
私が実際に取り組んでいるいくつかのアプリには、そのようなものが必要でした。私はこれを調査するのにかなりの時間を費やし、それを達成することができました。
結果にかなり満足しています。メール/パスワード認証に加えて、同じように機能するソーシャル認証を追加しました。
apk をダウンロードしてテストします。
これがあなたが探しているものであるなら、あなたは両方のクライアント側コードをチェックアウトすることができます: https://github.com/malikov/Authenticate.me-client-cordova-ionic
サーバーサイドのコード: https://github.com/malikov/Authenticate.me-Node-Server