0

userId、ユーザーが所属するグループ、およびユーザーのアクセス許可を格納するアクセス許可オブジェクトを作成しました。公開クラスです

また、アクセス許可オブジェクトのリストを格納する静的オブジェクトも必要です。管理者がアクセス許可の何かを変更すると、すべての変更がログインしているすべてのユーザーにすぐに適用されます。

いくつか質問があります。

  1. 最初のユーザーがログインするときにこの静的オブジェクトを作成する必要がありますか、または最初のユーザーがログインする前にそのリストを作成するために使用する必要があるメカニズムがあります (たとえば、IIS でアプリを起動するとき)。
  2. ログアウト時に特定のユーザーのアイテム リストを簡単に削除できますか?

これは、管理者が変更を加えるとすぐに権限設定が有効になるというシステム要件です。

編集1:

public class permissionTemp
{
    public static Guid userGuid        { get; set; }
    public static string[] grupos      { get; set; }
    public static string[] permissoes  { get; set; }
}


public static class security
{
    public List<permissionTemp> userPermissionSet { get; set; }
}
4

3 に答える 3

2

シングルトンについて考えてください。作成時間について心配する必要はありません。

シングルトン:

public class Permission
{
   private Permission()
   { }      

   private static Permission _instance = null;
   public static Permission Instance
   {
      get
      {
         if(_instance == null)
         {
            _instance = new Permission();
         }
         return _instance
      }
}

これで、次のコマンドで同じインスタンスにアクセスできます。

Permission.Instance

オブジェクトは最初のアクセスで作成されます。したがって、プライベートコンストラクターでは、データベースからアクセス許可を読み取るためのコードを追加できます。

于 2013-03-01T12:36:35.527 に答える
1
  1. global.asax で Application_Start メソッドを使用して、Web サイトの初回起動時にコードを実行できます。これは、最初のリクエストが処理される前に実行されます。
  2. global.asax で Session_End メソッドを使用して、リストから項目を削除できます。また、FormsAuthentication.SignOut を実行すると同時に行うこともできます (フォーム認証を使用している場合)。

注:リストへの複数の同時アクセスを防ぐために、いくつかのロックメカニズムを使用します。リストを保存する別の場所は、WebCache です。これはすべてのユーザーが使用するため、x さんが更新すると、次に y さんが読み取るのが更新されたバージョンになります。

于 2013-03-01T14:02:12.457 に答える
0

まず第一に、そのような意味のある情報を保存するための静的オブジェクトの作成を避けることをお勧めします。また、ユーザーが[ログアウト]をクリックせずにブラウザを閉じた場合、その特定のユーザーのオブジェクトは削除されません。

それでも、要件を満たすためにこれを行う必要がある場合は、アプリケーションの初回起動時に、Global.asaxファイルのApplciationStartEventのそのオブジェクトに作成できます。

于 2013-03-01T12:37:15.470 に答える