0

頭を包み込もうとして少し問題があります。動作しているアプリケーションがあり、現在の機能の1つはスーパーバイザーオーバーライドです。つまり、特定のアクションが要求された場合、スーパーバイザーは自分のクレデンシャルを入力でき、アクションが実行され、サイトは以前のユーザーのクレデンシャルを返します。

このシナリオは、YiiフレームワークとRights拡張機能を使用して可能ですか?先行する方法についてのアイデアをいただければ幸いです。

ところで、私の最初のアイデアは、現在のユーザーのセッションをDBに保存し、それを破棄して、新しいセッションを開始することでした。

ありがとう

編集

これが適合するシナリオは次のとおりです。

  1. ジムは顧客の請求書に記入しています。顧客は割引を適用する必要がありますが、ジムはそのタスクを実行するために必要な資格情報をシステムに持っていません。
  2. シフトスーパーバイザーであるマークは正しい資格情報を持っているので、スーパーバイザーオーバーライドボタンをクリックしてログインし、請求書に割引を適用します。
  3. ジムは請求書を完成させ、職務を遂行します。

したがって、このシナリオでは、マークがオーバーライドボタンをクリックすると、ジムのセッションが破棄され、マークはサイトにサインインできます。タスクが完了すると、マークセッションが破棄され、ジムが復元されます。これは、POSシステムで非常に一般的なシナリオであり、スーパーバイザーは、前のユーザーを再認証することなく、システムで認証して単一のタスクを実行できます。

4

1 に答える 1

0

セッションを完全に破棄する代わりに、次のようにすることができます。

  • スーパーバイザーログオンが成功したときに、現在ログインしているユーザーがいる場合は、ログインしているユーザーの資格情報をある種の「フォールバック」ユーザーアカウントに保存します。
  • メインユーザーモデルをスーパーバイザーユーザーモデルに置き換えます
  • スーパーバイザーユーザーが必要なアクションを実行できるようにする
  • ログアウト時に、セッションを破棄する代わりに「フォールバック」ユーザーが存在する場合は、メインユーザーモデルを「フォールバック」ユーザーモデルに置き換えます

それは理にかなっていますか?セッションを破棄する(元のユーザーが再ログオンする必要がある)代わりに、スーパーバイザーモデルに必要な情報を交換することで、セッションが破棄されているように見せかけることができます。

少し壊れやすいかもしれませんが、セッションを破棄すると、もうアクセスできなくなります...

于 2012-11-19T05:07:57.777 に答える