ほとんどのアプリケーションでは、ユーザーの役割に応じて、アクセス制御を行う必要があります。このレッスンでは、Webアプリケーションにそのような制御を設定する例を見ていきます。このタスクの一部として、あなたは以下を行う必要があります。
- ユーザーロールを定義する
- ロールに応じて、ナビゲーションメニューアイテムの表示を制御する
- 特定のロールがアクセスできないページへのナビゲーションを不可能にする
初期準備
まず、準備の部分から始めましょう。さらなる設定の便宜のために、現在のユーザーに関する情報を格納するグローバル変数の作成が必要です。これにより、チェックが必要な場合、いちいちバックエンドに問い合わせて、ユーザーに関する情報を要求する必要がなくなります。グローバル変数から必要なデータを読み込むだけで十分です。
認証されたユーザがアプリケーションにアクセスするための様々なオプションを考慮する必要があります。
- Login ページで認証に成功した場合のログイン。
- 登録の結果としてのログイン。
- すでに認証されているユーザーのための特定のページへのリンクによる直接ログイン。
これらの各ケースでは、ユーザーに関する情報を返すバックエンドクエリーが使用されます。対応するビジネスプロセスでは、グローバル変数を記録するための Set Variableブロックを追加して、先ほど作成したグローバル変数 User_gvを記録するブロックを追加するだけです。
このブロックは CheckAuthビジネス・プロセス・セクションの Prebuiltフォルダにあります。
ログインページまたはサインアップページから入るには、対応するボタンのビジネスプロセスにブロックを追加します。
アプリケーションのスタートページで結果を確認してみましょう。そのために、アプリケーションの開始ページで結果を確認してみましょう。 Labelを追加して、ユーザーを名前で迎え、役割に応じて、そのユーザーが管理者であるかどうかを書き込みます。
Label のいずれかが表示されたときに起動するビジネスプロセスを設定する必要があります (Label onShowトリガー)を設定する必要があります。
- Expand User.ユーザーの名前と役割については、.
- In Array.指定されたユーザーがグループに属しているかどうかを確認するには Adminsグループに属しているかどうかを確認します。
- If-Else.チェックの結果に応じたアクションの可変性について。
- Set Variable (String).String 変数を作成し、その値を "NOT " という値を持つ変数を作成する。 Adminsグループのメンバーでない場合は" "、メンバーである場合は空の値を持つ変数を作成する。
- Concat Strings (Multiple).Hi, Ken. You are NOT Admin" のような完全なフレーズを作成する。
- Label Update Properties.このフレーズをページ上に最終的に表示するため。
すべてが正しく行われた場合、ページに入るためのどのようなバリエーションでも、画面は同様の結果になる。
メニュー項目の可視性制御
さて、いよいよメインパートに移ります。管理者のみを対象としたページを作成し、そのページに移動するための対応するメニューアイテム(Admin Page)を追加しましょう。最良の解決策は、デフォルトでその可視性を無効にすることです。
そのためには Navigateブロックを使って、作成されたページを Pageパラメータで作成されたページを選択し、このページのIDを見つける必要があります。
この例では、アクセス制限のあるページは1つだけだが、このようなページが多数存在する場合を想定し、グローバルな読み取り専用変数を作成して、ページのリストを保存しておくとよいだろう。
次に、ナビゲーション・ページの可視性を制御するために、ビジネス・プロセス自体 (これを Set NavItem Visibilityを作成し、ナビゲーションメニュー項目の表示/非表示を制御します。
- Expand User.ユーザーの役割に関する情報。
- In Array.指定されたユーザが Adminsグループに属しているかどうかを確認します。
- For each loop.グローバル変数で指定されたすべてのページに対してループを実行するには。
- NavItem Update Properties.ユーザーが管理者であるかどうかによって、要素の可視性を制御すること。
作成したビジネスプロセスのブロックは、ログインボタンやユーザー登録ボタンのビジネスプロセスにおいて、トップページに行く前に追加する必要があります(以前は。 Set Variableブロックが追加され、現在のユーザーに関する情報を持つ変数が記録されます)。
直接リンクによるアクセス制御
最後に、アプリケーションが起動するたびに実行されるビジネスプロセスを、"On app launch" トリガーによってアプリケーションが起動されるたびに実行されるビジネスプロセスを設定することです。前のステップと同様に、認証済みユーザー用の Set NavItems Visibilityブロックを追加します。
さらに,閉じたページに直接リンクでアクセスできないようにすることも必要である.
- In Array (Admin_pages).対象ページが管理者専用ページのリストにあるかどうかを確認する。
- If-Else.チェックの結果によって、アクションを可変にするため。もし Falseの場合は、指定したページに移動できます。の場合は Trueの場合、このページにアクセスする権利の追加チェックが必要です。
- Expand User.グローバル変数からユーザー情報を読み取るには User_gv.
- In Array.Admins グループに属しているかどうかを確認する .
- If-Else.管理者権限の有無に応じたアクションを選択する。
- Navigate.適切な権利を持たないユーザーが管理者専用のページを開こうとした場合に、必要なページに移動するか、スタートページにリダイレクトする。
選択されたページは,不正なアクセスから保護されます.選択されたページは,不正なアクセスから保護されます.権限がない場合は,メニューに表示されず,直接リンクでもアクセスできません.
特定のページに対するアクセス保護は、そのページで使用できるエンドポイントに対する自動的な保護を意味しないことを覚えておくことが重要です。これを行うには、必要であれば Middleware Token Authの設定で、選択したエンドポイントへのアクセス権を持つユーザー グループを指定する必要があります。