問題タブ [ember-simple-auth]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
authentication - Ember App Kit 内で ember-simple-auth をテストする
Ember アプリの統合/承認テストを実行しようとしています。具体的には、ユーザー認証 (ログイン フォームの送信など) と、認証されたユーザーを必要とする保護されたページ/状態をテストしています。
私のアプリに関する一般的な注意事項:
- Ember アプリ キットの使用
- 認証にember-simple-authを使用する
- Deviseオーソライザーを使用してヒットするember-simple-authフォームのAPIスタブがあります。これらは、ブラウザー内でアプリを実行するときに正常に機能します。
3 つの問題があります。
1. オーセンティケータとエフェメラル ストレージの工夫
ember-simple-auth API からは、テストにエフェメラル ストレージを使用することを指します。私はそうしました、このように。ただし、セッションはまだローカル ストレージに保存されているようです。各テストで実行しないとlocalStorage.clear()
、最初のテストの後に各テストを実行するときにログインしたままになるため、セットアップ/ティアダウン テストが失敗します。
アプリで Devise オーセンティケーターを使用している場合、各テスト間でセッションをローカル ストレージに保存しないようにすることはできますか?
2. 複数の受け入れテスト
複数のユーザーにログインしようとするとtest()
、テストがスピンオフして無限ループになります。最初のテストはパスしますが、2 番目のテストがログイン フォームを送信すると、テスト スイート全体が停止して再起動します。
統合テスト #1
統合テスト #2
3. EAK api-stubs & Testem
EAK の api- stubs は Testem で使用できないようです。そのため、これらの受け入れテストの「ログイン」プロセスをコマンド ライン/Testem 経由で実行すると失敗します。
sinon.js をセットアップしようとしましたが、上記の問題により、実際に正しく機能しているかどうかを判断できませんでした。ember-simple-auth を使用してユーザーのログインを正常にスタブ化する最良の方法は何ですか? Testem に EAK の API スタブを使用することは可能ですか?
ember.js - Ember Simple Auth を使用してユーザーのアカウント情報にアクセスする
アプリケーションでember-simple-authを使用していますが、うまく機能していますが、現在のユーザーのプロパティ (電子メールや名前など) を UI に表示できるようにしたいと考えています。過去に、アプリケーション初期化子を使用してこれを行い、基本的にすべてのコントローラーに currentUser を挿入しましたが、アプリケーションが初期化されたときに現在のユーザーを知る必要がありました。OAuth を使用しているため、アプリケーションの読み込み時にユーザーが不明です。
現在ログインしているユーザーからプロパティを取得する方法はありますか?
cordova - Ember deferReadiness / 実行時の一時停止
Ember.js を使用して Phonegap アプリを開発しています。私のアプリケーションでは、oauth (Ember-Simple-Auth) による認証を使用しています。アプリを起動している間、トークンが更新され、承認されたリクエストをバックエンドに送信できるようになるまで、準備は延期されます。
アプリを使用していないときにトークンの有効期限が切れることがあるという phonegap の問題が発生しています。アプリに変更すると、期限切れのトークンが表示されますが、ember のブートストラップ プロセス全体が再トリガーされないため (その場合、ember の単純な認証はトークンが期限切れであることを認識して更新します)、期限切れのトークンで承認されます。 . いくつかの phonegap イベント (再開) でアプリの準備を延期して、更新をトリガーし、アプリを「リリース」する可能性はありますか?
アップデート:
アプリの準備が整った後は、deferReadiness を実行できないことを確認しました。質問は、access_token を更新していない前に、アプリケーションが別のルートに入る (--> モデル フックを呼び出す) のを防ぐ方法です。または、移行中のアプリを強制的に「読み込み中」状態に保つことは可能ですか? (画面を直接表示し、非同期のコンテンツを追加するために、モデル フックの外部でバックエンド呼び出しをいくつか行っています)
ember.js - Ember.SimpleAuth.Authenticators.Base 内の DS.store にアクセスする方法
以下は、Ember.SimpleAuth の基本オーセンティケーターです。これには、オーバーライドする必要がある承認メソッドが含まれています。
authorize メソッドで this.store を呼び出すと、「this.store is undefined」と表示されます。基本的に、ユーザーが承認された後、(ストアを使用して) ユーザーを検索したいだけです。
javascript - Ember-Simple-Auth が更新トークンをサポートするのはなぜですか? (JS + OAuth 2.0)
これまで OAuth 2.0 仕様で読んだことから、Javascript 経由でアクセスできるブラウザに機密情報を保存することはお勧めできません。
ここでの議論もこの点に同意しているようです: Using OAuth2 in HTML5 Web App
現在、REST スタイルの API バックエンドのフロントエンドとして Ember ベースのアプリを構築しており、ユーザー ログインを処理するためのライブラリとして Ember-Simple-Auth を使用しています。これは、リソース オーナー パスワード資格情報ワークフローを実装し、明示的にサポートしていますトークンをリフレッシュします。
OAuth 2.0 の「リソース所有者パスワード資格情報」権限付与タイプでは、更新トークンの使用が許可されていることを読みましたが、この段落のテキストは、クライアントの非常に一般的な定義に対処するように書かれています。
Ember.js は、ブラウザーで実行される単一ページの Web アプリケーションを作成するためのフレームワークであるため、私は今疑問に思っています...
Ember アプリでリフレッシュ トークンを使用しても安全ですか? 上記の議論は同意しないようです。これは私を次のように導きます:
Ember-Simple-Auth が更新トークンをサポートするのはなぜですか?
ご検討いただきありがとうございます。一番!マーカス
javascript - EAK と ember-simple-auth カスタム オーセンティケーター
EAK を使用してアプリに組み込まれた認証のための迅速で汚れた基盤を取得しようとしています。認証機能は期待どおりに機能します。一致するメールを探し、見つかった場合は promise を解決します。
何らかの理由で、restore メソッドがページのリロード時に呼び出されることはありません...またはまったく呼び出されません。これが EAK の問題なのか、ESA の問題なのか、それとも私が間違っている何かの問題なのかはわかりません。
どんな洞察もいただければ幸いです!
編集:
最初の認証後のローカル ストレージの内容は次のとおりです。
編集:ブレークポイント後のローカルスコープのショット
編集:復元方法にいくつかのデバッグ行を追加しました
「Log 3」行に到達することはありません。_this.container.lookup('authenticator:custom')
また、それを超える行に到達しないように思われる を手動で実行しようとしました。そのため、ルックアップに問題があるようです。
編集:行container.injection('authenticator:custom', 'store', 'store:main')
が初期化子から削除されると、復元メソッドが呼び出されます。明らかに、ストアがなければ、オーセンティケーターはあまり役に立たないため、別の処理方法が必要になる場合があります。
その他:ストアのインジェクションだけでなく、オーセンティケーターへのインジェクションがこの問題を引き起こしているようです。