次の関連プロパティを持つ ASP.NET MVC5 Web アプリに取り組んでいます。
- MVC5.1、Identity 2.0 を使用し、従来のものに限定されず、最新のものをすべて使用できます。
- ユーザーは少なくとも 1 つの組織に属しています。
- 各組織には、組織管理者であるユーザーが少なくとも 1 人います。
- 組織管理者は、別の組織管理者になるなど、ユーザー固有の権限を許可できます。
- 私が理解していることから、これを処理する良い方法は、クレームを使用することです。
既定のクレームに加えて、ユーザーは通常、次のクレームを持つことができます。
組織: {いくつかの GUID} 組織管理者: {上記と同じ GUID} 組織発行者: {再び同じ GUID}
スーパー管理者やスーパーユーザーが存在する可能性があり、複数の組織のさまざまな役割へのアクセス権を主張している可能性があります。
ここで、管理パネルにログオンしているユーザーであり、Organization-Admin クレームを持っている組織の Organization-Publisher クレームをadmin
ユーザーに付与したいとします。user
簡単にするために、次のようなモデル オブジェクトがあります。
public class GrantRightModel
{
public string OrganizationId { get; set; }
public string UserId { get; set; }
public string Right { get; set; }
}
この例では、admin
ユーザーから次の値を取得します。
admin
OrganizationId: Organization-Admin クレームを持つ組織の GUID 。- ユーザーID:
user
- 右: 組織 - 発行者
このやり方について私を回避してきたことがたくさんあります。GrantRight アクションを持つ OrgAdmin コントローラーがあるとします。
コントローラー アクションは、現在ログインしているユーザー (たとえば ClaimsPrincipal.Current を使用して検出) が GrantRightModel.OrganizationId の Organizaton-Admin クレームを「手動で」持っていることを確認する必要がありますか?
Organization-Publisher: {guid} クレームを に追加するコードの正しい方法は何
user
ですか? 私のコントローラーは、依存性注入によって必要に応じて UserManager を取得します。これ
user
が発生したときにアプリケーションにサインインしている場合、次の要求から自動的に正しいクレームを取得する方法はありますか? ユーザーをログアウトさせて、再度ログインし、新しいクレームで新しいセッションを開始する方法について言及したことがあります。その理由はわかりますが、ユーザーが長時間かかる作業をしている可能性があることを考えると、作業を送信しようとしたときにログアウトさせるのは一般的ではないかもしれません。
これについてはウェブ上に少しの情報がありますが、私の google-fu は、これらの 3 つのポイントを打ち負かす方法を示すものを見つけることができませんでした。
誰?
ありがとう!