認証されたらHttpContext.Current.User.Identity.Name;
、ユーザーがサイトの一部を表示する権限があることを確認するために使用します。
サイトの特定の部分にアクセスするとき、ユーザーを取得し、どのコンテキスト (ログインしている組織) を取得する必要があります。urlは次のようになりsettings/supercompany/profile
ます。ここで、supercompanyは現在のコンテキストです。
ユーザーごとに、その会社の管理者か一般ユーザーかを確認する必要があります。一般ユーザーの場合、特定のものを見ることができません。
public class SettingsApi
{
private readonly string _userId;
private readonly string _contextId;
public SettingsApi(string userId, string contextId)
{
_userId = userId;
_contextId = contextId;
}
}
上記のクラスをコントローラー (post または get) からインスタンス化すると、キャッシュによって何らかの問題が発生しますか? ユーザーの役割が変更されましたが、それを取得しませんか? 以下のようなものはうまくいきますか?
var settings = new SettingsApi(HttpContext.Current.User.Identity.Name, currentContextId);
settings.IsAdmin();
注: 属性を使用して承認することもできますが、私の要件は、URL から currentContext を選択する必要があることと、コードの他の場所で上記のクラスを使用する必要があることです。
アップデート
AuthorizeAttributeはキャッシングでうまく機能しますが、認証に使用される方法はつまり
protected override bool AuthorizeCore(HttpContextBase httpContext)
必要なクラスのインスタンスを返してくれません...
更新 2とにかく、このクラスまたはこのクラスのインスタンスをキャッシュしたくないので、新しいインスタンスを要求するたびに、DB からインスタンスを取得してもかまいません...
私の質問 - 私のコーディング方法は大丈夫ですか? ユーザーとその権限はキャッシュされませんか?