質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Angular2

    173questions

  • Authentication

    86questions

    Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

  • OAuth 2.0

    84questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

  • Ionic

    73questions

    Ionicは、AngularJSベースのモバイルアプリ向けUIフレームワークです。Apache Cordovaを拡張して作られているため、モバイルアプリ作成に適しています。シンプルなUIも特徴です。

auth0のRulesのエラーハンドリングの方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 569

stvrz2

score 1

 実現したいこと

auth0でgoogle認証で成功した後、Auth0のRulesでエラーになった場合に、エラーメッセージをURL Fragment(Hash)から取得せず、Auth0のBasic認証とどうようにコールバック関数で処理したい。

また、URLにはfragmentをつけないようにしたい。

なお、スマホのブラウザで利用することを想定して、redirectで利用。

 現状

google認証成功後、auth0側のUsersにはユーザーが登録されている。
しかし、リダイレクト後の画面では、URL Fragmentにエラーコードがはいっており、window.location.hashで取得してエラーハンドリングしている。
(一方で、Basic認証の場合は、callback関数で処理しており、エラー時の処理が分散している。また、この場合はエラー時もFragmentは空)

Auth0-jsを使用していますが、同じことができればLockでも可です。

 Rulesの例

初めてのログインの場合にエラーとする。(サインアップ(=利用規約への同意)を促すため)

function (user, context, callback) {  
  user.app_metadata = user.app_metadata || {};

  // short-circuit if the user signed up already
  if (user.app_metadata.signed_up) {
    return callback(null, user, context);
  }

  return callback(new UnauthorizedError('user_not_exist'));

 エラー時のURL(google-oauth2でエラーになった場合)

http://localhost:8100/?error=unauthorized&error_description=user_not_exist#

 Angular側のauth.service.ts

  loginWithGoogle(): void {
    this.auth0.authorize({
      connection: "google-oauth2",
    });
  }

 Angular側のhome.component.ts

※ redirect先のcomponent

IonViewWillEnter() {
  const fragment = window.location.hash;
  // エラー処理...
}

 Bascic認証の場合(参考): auth.service.ts

this.auth0.client.login({
  realm: 'Username-Password-Authentication',
  ,,,
}, (err, authResult) => {
  // エラー処理
});

 エラー時のURL(参考): Basic認証

※ Fragment/Hashはなし

http://localhost:8100

 利用パッケージ

  • Ionic 2 (Webとして使用)
  • Angular 2
  • auth0-js(ver8.3)・・・redirectを使用。なお、lockは未利用
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

そもそもsignupとloginが、basic/oauth2のそれぞれでどのような挙動になるかでエラー、正常時の制御の仕方が変わる
signup時だとそもそもrulesが起動されないため、auto_login: trueとするか、loginメソッドを起動してrulesを動かすようにするなどの工夫が必要

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Angular2

    173questions

  • Authentication

    86questions

    Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

  • OAuth 2.0

    84questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

  • Ionic

    73questions

    Ionicは、AngularJSベースのモバイルアプリ向けUIフレームワークです。Apache Cordovaを拡張して作られているため、モバイルアプリ作成に適しています。シンプルなUIも特徴です。