問題タブ [satellizer]
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.
angularjs - API エラー 401 でトークンを削除するには?
$http
いずれかの呼び出しで 401 エラーが発生した場合に、サーバーからエラーを検出してトークンを削除する最も簡単な方法は何ですか? たとえば、ユーザーがアプリを使用していない間にセッションの有効期限が切れた場合、ユーザーが Web アプリに戻ったときにトークンは無効になります。API 呼び出し中に 401 エラーを返した場合は、これに注意して、ユーザーに再度ログインさせる必要があります。
現在、Chrome 開発者ツールで 401 エラーを確認できますが、Satellizer はトークンを削除しません (一度は削除したと思っていました)。
httpInterceptor を作成しようとしましたが、Circular Dependency エラーを受け取りました:
ionic-framework - イオンでサテライザーを使用してエラーを取得する
.controller('LoginCtrl', function($scope, $location, $stateParams, $ionicHistory, $http, $state, $auth,$rootScope) {
}); 関数に $auth を追加すると、次のエラーError: [$injector:unpr] Unknown provider: $authProvider <- $auth <- LoginCtrlが表示されます。
angularjs - Satellizer と汎用 OAuth2 プロバイダーを使用した OAuth2
OAuth2 を一般的な OAuth2 プロバイダーと連携させるのに苦労しています。これが状況です。
サービスは、承認したい場所に OAuth2 認証方法を提供します。satellizer 用に次の構成を持つ AngularJS アプリを作成しました。
baseUrl は、ミドルウェア部分を処理するノード サーバーを指しています。
認証部分をトリガーする次のコードもあります。
これまでのところ、これはすべてうまく機能しているようで、Satellizer によって文書化されているものと非常によく似ています。ここで、angular アプリを起動して認証を開始すると、Node サービスをターゲットとするリクエストが送信されていることがわかります。
次に、「user/authorize/token」URL にフックする node.js サービスを用意しました。コードは次のとおりです。
と:
ここで、すべてがうまくいかないようです。最初に OPTIONS リクエストを受け取ったようです。OPTIONS リクエストに関するドキュメントに何も見つからないように見えるため、どうすればよいかわかりません。「Authorization」ヘッダーが含まれている可能性があると思いましたが、そうではないようですので、res.end(); で接続を閉じます。
Chrome でリクエストも調べましたが、この正確な名前のヘッダーが見つからないようです。
次に POST リクエストを受け取ります。これには何かが含まれているようです。万歳!次のオブジェクトを取得します。
これは、デコードする必要がある認証コードのように見えます。それが、上記のコードで私が試していることです。残念ながら、これは私にエラーを投げるようです
エラー: セグメントが足りないか多すぎます
これは、私が何か間違ったことをしている可能性があり、行き詰まったことを示しています。
PHP は私の専門分野ではなく、node.js/JavaScript は彼の専門分野ではないため、完全には理解できず、コードを自分のコードに関連付けることもできません。PHPコードは次のとおりです。
うまくいけば、誰かが私を助けることができます! 前もって感謝します。
angularjs - Satellizer と Passport の統合
私は現在、PassportJS を実行している ExpressJS アプリケーションを持っています。Passport を使用して GitHub で認証します。これらは既存のエンドポイントです。
これにより、認証 URL が作成され、その URL にリダイレクトされます。
これは、アクセス トークン、ユーザー オブジェクト、および json Web トークンを取得するためのすべての魔法を実行します。
ご覧のとおり、エンドポイントは 2 つしかありません。認証/API は にhttp://localhost:8080/
あり、フロントエンドは にあります。http://localhost:3000/
私の質問は、Satellizer がこれらの既存のエンドポイントと連携するための設定は何ですか? $authProvider.github()
またはカスタム$authProvider.oauth()
プロバイダー オブジェクトを使用する必要がありますか?
javascript - Satellizer による自動ログイン
ログインコントローラーにサテライザーを実装しました。しかし、自動ログインはどうですか?ベスト プラクティスとは
auth への呼び出しは、LoginCtrl 内にあります。
ユーザーが別のページにいる場合、トークンの有効期限が切れていると、認証が必要なページにアクセスできなくなります。彼に再度ログインさせたくありません。したがって、他の各コントローラーで、保護されたリソースへの要求が失敗した場合、私の考えは彼を自動ログインすることです。したがって、これらすべてのコントローラーに auth.login を配置します。これは悪い選択のように見えます。
私は何をすべきか?サービスを作成しますか? ログインと自動ログインの両方?これはベスト プラクティスですか?