問題タブ [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.
ember.js - Ember-Simple-Auth currentUser サンプルのヘルプが必要
だから私はここにアカウントの例があることを理解しています:
現在ログインしているアカウントを取得するためのコードを提供します。Ember-CLI アプリで動作させようとしているので、例についていくつか質問があります。
SimpleAuth
例では使用されていますが、どこから来ているのかimport SimpleAuth from ...
わかりませんが、どのファイルからインポートするのかわかりません。
さらに、サーバーからの応答が user_id と access_token/refresh_token を返す必要があるかどうか疑問に思っていますか?
もしそうなら、そのoauthは互換性がありますか?
編集:私の現在のコード
認証は完全に機能します。それは、ember が作成しようとする呼び出し /user/id が表示されないことだけです。
サーバーからの応答例:
ember.js - imy CustomAuthenticator から ember-simple-oauth2 認証を使用する方法
独自の customAuthenticator を使用して正常に認証できます。
認証バックエンド サーバーでは、要求ヘッダーに client_id と client_secret が必要なため、customAuthenticator を使用する必要があります。
このようなもの。
ただし、認証メソッドが使用する simple-auth-oauth2.js ファイル内にいくつかのユーティリティ関数があることがわかります。
次のようなメソッド: absolutizeExpirationTime(response.expires_in); scheduleAccessTokenRefresh (response.expires_in、expiresAt、response.refresh_token);
私の質問は、customAuthenticator から simple-auth-oauth2 内でこれらのメソッドを呼び出す方法です。
これらのメソッドを customAuthenticator ファイルにコピーしたくありません.....
ember.js - ユーザーをセッションに保存する方法
django-rest-framework バックエンドで ember-simple-auth をセットアップしようとしていますが、ユーザーをセッションに保存する際に問題が発生しています。テンプレートで次のようなことができる必要があります。
したがって、私が見つけたいくつかのガイドに従って、認証と承認が機能するようになり、有効なトークンを取得してリクエストで使用できるようになりました。セッションでユーザーを取得するApp.CustomAuthenticator.authenticate
ために、トークンが返されたときにユーザー名もセッションに保存されるように変更しました。
次に、プロパティApplication.intializer
を与えるように変更しました。session
user
ただし、{{session.user.username}}
レンダリングされると、空の文字列になります。私の質問は次のとおりです。
- これは、ユーザーをセッションに割り当てるための最良の方法ですか? 私には不器用に思えますが、より良いものは何も見えません。
User
空の文字列は、オブジェクトではなく Promise が返されたためだと思いますが、どうすれば解決できますか?
ember.js - Express/Passport セッション ドメイン Cookie で ember-simple-auth を使用できますか
私はプロジェクトを進めており、サーバー側を使用して、sid Cookie を前後に送信することで状態を自動的に処理する Express/Passport ドメイン Cookie を介して認証と承認を処理しています。
私はクライアントで認証管理をあまり構築していませんでした。サーバービューでグローバルjsオブジェクトとしてブートストラップするユーザーデータを取得していました。これを ember でより適切に処理したかったので、ember-simple-auth の実装を開始し、そこでログインや状態などをうまく処理できましたが、常にトークン戦略に依存しているようです。
現在、私のコードは次のようになっています。ご覧のとおり、トークン オブジェクトを使用して Promise を解決して機能させる必要がありますが、目的の戦略ではトークンは必要ありません。
私の質問は、ember-simple-auth を Express/Passport ドメイン Cookie で動作するように適合させることができるか、またはベアラー戦略または oauth2 などを使用するようにサーバーを変更する必要があるかどうかです。
ありがとうございました。
session - Ember SimpleAuth は、保護されたリソースへのアクセスを認証します
ユーザーがさまざまな「ページ」で組織を編集できるアプリがあります。
ユーザーが任意の組織を表示できるようにしたいのですが、ユーザーが組織に対する管理者権限を持っている場合は、さまざまなページを編集できるようにする必要があります。
組織は、サーバーによって処理されるトリッキーなロジックに基づいて編集可能です。ユーザー モデルには、これらの管理者権限を反映する組織属性があります。これは、組織オブジェクトに反映されます。サーバー上では、多対多のテーブルとその他のロジックがあります。
Ember SimpleAuth を使用して、ログイン ページを介して認証し、API へのリクエストを承認しています。カスタム セッションを使用して、認証済みユーザーのデータを読み込みます。
テンプレートで属性を編集可能にするこのようなコントローラーがあります。
だから私のテンプレートでは、私はこのようなことをします...
キーは{{#if session.isAuthenticated}}
ステートメントです。これにより、ユーザーがログインしている場合にのみ、制限された機能にアクセスできるようになります。
これまでのところ、すべてかなり正常です(私は思う)。
ただし、現在のユーザーが問題の組織へのアクセスを許可されているかどうかをセッションに尋ねられるようにしたいと考えています。{{#if session.isAuthenticated}}
そこで、 toを変更し{{#if session.isAuthorised}}
て、現在のモデル/ルートを自分のデータと照合させたいと思います。
これを行うにはどうすればよいですか?より良い代替手段はありますか?リソースを個別に保護するにはどうすればよいですか?
PS「承認済み」の英語のスペルについてお詫び申し上げます。
ember-cli - 受け入れテストに干渉するカスタム セッション
ember-cli-simple-auth
プロジェクトでandを使用しember-cli-simple-auth-devise
ていember-cli
ます。
Session
また、初期化子を介してsimple-auth をカスタマイズしています。
簡単な受け入れテスト (単に を呼び出すものok(1)
) で、次のエラーが発生します。
行をコメントアウトするself.set('currentUser', user);
と、エラーはなくなります。
これを処理する適切な方法は何ですか? テストでこの初期化子を無視する方法はありますか?
次のログ メッセージも表示されます。
Ember Simple Auth 用にオーソライザー ファクトリが構成されていません - バックエンド リクエストを承認する必要がある場合は指定してください。
ember.js - 独自のコントローラーからの簡単な認証無効化セッション
現時点では、自分のコントローラーの 1 つでember-simple-auth ( https://github.com/simplabs/ember-simple-auth/ ) からの invalidateSession() アクションを使用する必要があるという問題に直面しています。
私は通常、彼らの例のようにそれを使用します:{{ action 'invalidateSession' }}
私のハンドルバー テンプレートで。preLogout
電話をかける前に何かをするinvalidateSession()
必要があるので、方法が必要ですが、現時点では方法がわかりません。
テンプレート:
{{ action 'preLogout' target='view' }}
意見:
コントローラ:
ありがとう
ember.js - ember-simple-auth: ajax エラー後にユーザーの URL を保存する
私は自分の ember-js アプリケーションに ember-simple-auth-0.6.4.js を適用しましたが、よくあるケースが 1 つあります。これが一連の手順です。
- ユーザーはアプリケーションで認証されます (そのためにカスタム認証システムを使用します)。したがって、セッションは有効になります。
- 非アクティブ状態が 20 分間続くと、バックエンド セッションが無効になります。
- ユーザーは (AuthenticatedRouteMixin から派生した) ルートに移動し、クライアントのアプリの残りのセッションがまだ有効であるため、「セッション認証済み」チェックに合格します。
- 次に、ルート モデル フックが呼び出され、ajax リクエストを使用してバックエンドからデータをロードしようとしましたが、バックエンド セッションが無効であるため、401 の無許可の応答が返されました。
- 401 エラー応答の後、クライアントのアプリ セッションが無効になります。次に、application-route-mixin で定義された sessionInvalidationSucceeded() ハンドラーが呼び出され、場所が変更されます: window.location.replace(Configuration.applicationRootUrl);
問題は次のとおりです。applicationRootUrl で定義された URL が認証されたルートの下にある場合、ログイン ページがユーザーに表示されますが、認証後、ユーザーは再び applicationRootUrl に移動しますが、最初に ajax エラーが発生したページには移動しません。
これに対する私の解決策:
AuthenticatedRouteMixin beforeModel() フックでは、最後の遷移を保存します。
Configuration.beforeInvalidationTransition = transition;
ApplicationRouteMixin で、sessionInvalidatedSucceeded フックを再定義します。
sessionInvalidationSucceeded: function() { if (Configuration.beforeInvalidationTransition) { this.get(Configuration.sessionPropertyName) .set('attemptedTransition',Configuration.beforeInvalidationTransition); } this.transitionTo(Configuration.authenticationRoute);
そのため、401 エラーが発生した場合、ユーザーはログイン ページ (Configuration.authenticationRoute) にリダイレクトされ、エラーが発生したルートは attemptsTransition に保存されるため、ログインに成功した後、ユーザーは作業を停止した場所にリダイレクトされます。
それは理にかなっていますか、それともこの問題に対するよりエレガントな解決策がありますか?