■開発を想定しているシステムの概要 SPIRAL ver2 を使った、アンケートサイトの開発を検討中です。 複数のアンケートプロジェクトが、五月雨式(非同期・個別)に開催され、 プロジェクトごとに、回答可能期間と、複数の回答者のアカウントを登録します。 回答者に、(URL、ログインID、パスワード) を配布します。 URLパラメータによって、プロジェクトを切り替えます。 ■制約 LoginIDはDB内ではユニークではありませんが、同一プロジェクト内ではユニークなので、 (ProjectID+LoginID)の組み合わせと「認証フィールド」で、認証したいと考えています。 メールを使わない回答者も想定するため、 「ID/パスワード」でなく「ID/認証フィールド」で認証したく考えます。 アンケートプロジェクトは、毎月何件も発生するため、その度に手間がかからないよう、 「DB」「認証フィールド」などは、プロジェクトごとに分割(や動的作成)しない想定です。 ■質問 以上の場合、ログイン認証をどのように実現可能ですか? ■補足 ・アンケート回答者は、URLを開き、「ログインID」「パスワード」のみをフォームに入力してログインする想定です。 ・認証の仕組みに、第3の項目(ProjectID)を加えることが可能かどうか、興味あります。 ・ProjectIDをサーバに送る方法は、hiddenフィールドやURLパラメータなどを使えるのか、 または、内部的に(ProjectID+LoginID)を連結し、ログインIDに混入できるか、興味あります。 ・本件は、「マルチテナント認証」という言葉で表現できるのかも知れません。 以上、よろしくお願いします。
コメント
上記により、ユーザーがログインIDと認証値を入力してログインするとプロジェクトに対するアンケートに答えることが可能となります。アンケートは参照フィールドでプロジェクトと紐づきます。 例:プロジェクトデータベースのIDがXXXXで回答いただきたいプロジェクトが「1」、チェック用コードが「khruh5」の場合 https://XXX.spiral-site.com/app/anqform?record=XXXX.1&checkcode=khruh5 参照フィールドの値はレコードなので簡単に変更が可能ですが、参照フィールドは参照先の値を呼び出すことが可能ですので、パラメーターで引き継いだチェック用コードと参照先に登録されているチェック用コードが同じ値かどうか比較するなどの対応で別のプロジェクトに変更されていないことを確認可能です。 また、参照フィールドの機能で参照先のデータを呼び出せるため、プロジェクトデータベースに回答期間終了日などを追加することで同様に値が呼び出せますので、呼び出した値を元にページの表示を変更することで締め切りの表示にするなどの対応が可能です。
早速、詳しいご回答、ありがとうございます。使わせていただきます。 (1) 「ログインボタン押下時にJavaScriptで両者を結合し、ログイン処理を行うといった対応が可能です。」 までの説明は、理解できました。Javascriptでテスト成功しました。 一瞬接頭語が見える点が気になりましたが、本物のIDフィールドをhiddenにして、表示用の偽のIDフィールドを作成することで、回避できそうです。 (2) 「しかし今回は、プロジェクトごとにIDデータをご用意いただかないご予定とのことでしたので」 以降は、複数の回答者が、同一の「ID/認証フィールド」を使い、都度新規登録する解決策だと理解しました。後日研究させていただきます。 ありがとうございました。
ナレッジ
向上チーム
お問合せいただきありがとうございます。 SPIRALで認証を行う場合、ログインIDは「入力必須」かつ「重複不可」の項目である必要がございます。 そのため、各プロジェクトごとにログインIDを発行いただき、「プロジェクトID+ログインID」の値をデータベースに事前登録いただけるようであれば、ログインボタン押下時にJavaScriptで両者を結合し、ログイン処理を行うといった対応が可能です。 しかし今回は、プロジェクトごとにIDデータをご用意いただかないご予定とのことでしたので、以下のような運用であれば、プロジェクトごとにログインIDを用意せずに、各プロジェクトに対応したアンケートの回答を実現可能です。 ■イメージ ・ユーザーデータベースを作成 ・プロジェクトデータベースを作成 - 項目:プロジェクト名、チェック用コード(推測困難なランダム値など) ・アンケートデータベースを作成 ・アンケート回答データベースに「参照フィールド」を作成し、プロジェクトデータベースを参照設定 ・ログインIDと認証値を入力する認証エリアを作成 ・認証エリア内にアンケート回答フォームを設置 ・回答フォームの「自動登録設定」で、参照フィールドを自動登録 ・回答者にお渡しするURLに、必要なパラメータ(record、checkcodeなど)を付与