0

フォーム認証で ASP.NET 2.0 メンバーシップおよびロール プロバイダーを使用する Web アプリケーションに取り組んでいます。システムにはさまざまな役割があります。基本的に、任意のユーザー アカウントとして「ログイン」できる (実際にはユーザーになりすます) スーパー ユーザーであるユーザー ロールが必要です。

プロバイダーを使用してこれが可能かどうかは誰にもわかりませんか? 何か案は?

私が考えていた1つのアプローチは、スーパーユーザーをログアウトし、目的のユーザーとしてサインインすることでした

FormsAuthentication.SetAuthCookie(username, false);

そして、変数をセッションに追加して、スーパーユーザーとしてフラグを立てます。これでうまくいくと思いますが、Session オブジェクトを直接使用せずにそれを行うためのよりスマートな方法があるかどうか疑問に思っていましたか?

4

3 に答える 3

0

Asp.netのアプローチはこの概念をサポートしていないため、別の方法を見つけることをお勧めします。できることは、IsSuperUser情報を認証チケットのUserDataプロパティに追加することです。

于 2009-02-25T17:12:53.637 に答える
0

これが私がすることです。申し訳ありませんが、グラフィックはありません。ベッドで iPad を使用しています...

1) クレーム ベースのアーキテクチャを使用します。実装は簡単です。私のプロジェクトを参照してください。

2) 本質的に偽装されたユーザーは、クレーム プリンシパル オブジェクトに 2 番目の ID を持ちますが、レルムは異なります (レルムは間違った単語である可能性があり、ID の作成に使用する文字列です)

3) 偽装されたユーザーの ID を作成し、手動でクレームを作成できます。それらはすぐにトークンに書き込まれるはずです。これを行うには、ジェネリック Claims Transformer クラスを調べます。

4) 偽装された ID の存在に基づいて、サイトの動作を調整する必要があるかもしれませんが、それは楽しい部分です。

作業中の WIF 実装 https://github.com/wcpro/scaffr-generated

于 2013-03-28T11:11:34.013 に答える
0

何でもできるスーパーユーザーの役割を持たないのはなぜですか? その後、ユーザーはそのロールの一部になることができます。

あなたが本当に必要としているのが、管理者が他の誰かになりすます能力である場合、追加のフラグが何のためにあるのかわかりません。現在ログインしているユーザーにスーパーパワーを与えていることを示す場合、役割を設定することで同じことが達成されます。ただし、他の誰かになりすます必要がある場合 (たとえば、これはヘルプ デスクであり、エンド ユーザーが見るのとまったく同じものを見る必要があります) - 通常どおり資格情報を確認し、スーパーユーザーがログインしているかどうか、および誰がログインしているかを確認します。彼らはなりすましを望んでおり、それに基づいて、ログインしているユーザーを、なりすましを希望するユーザーとして認証するだけです。

私が書いたことが意味をなすことを願っています...

于 2009-02-25T15:44:42.040 に答える