0

次のような UserProfile モデルがあります。

public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }

        public string UserName { get; set; }
        public string Position { get; set; }
        public string  Authority { get; set; }
        public string Service { get; set; }
        public string Area { get; set; }
        public int IsWrite { get; set; }

    }

テーブル データは次のようになります。


ユーザー ID | 使用名 | ポジション | 権限 | サービス | エリア | IsWrite


1 | ピーター | ピーター | HSKマネージャー | サービス Ar | HSK| わ | 0

2 | ドロシー | ドロシー 支店長| アー | すべて | EA |1

3 |マイク | HSK ディレクター | サービス | HSK| すべて | 0

4 | ロッデル | HSK データ入力 | サービス | HSK| すべて | 1

5 | スーザン| WA データ入力 |Ar | すべて | わ | 1

6 | ナンシー| 施設COO | すべて | すべて | すべて | 0

7 | アラン | アラン | フード ブランチ マネージャー | サービス Ar | FSD | FSD | EA | EA | 0


ユーザーにはさまざまな種類の権限範囲があります。たとえば、1 つは特定のサービスに対する権限を持ち、もう 1 つは特定の領域に対する権限を持ち、ユーザーはサービスと領域の両方に関するレコードを表示する権限を持つ場合があります。各 List コントローラー アクションのロジックを作成して、UserProfile 権限をチェックし、各ユーザーの権限の範囲を考慮してデータを一覧表示したいと考えています。

これは、データがプロジェクトと呼ばれるユーザーの権限に依存する別のモデルです。

public class Projects
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int ProjectID { get; set; }

        public string Service { get; set; }
        public string Area { get; set; }

        [Required]
        [DisplayName("Project Name")]
        public string ProjectName { get; set; }

        [Required]
        [DataType(DataType.Currency)]
        [DisplayName("Contract Value")]
        public double ContractValue { get; set; }

        [Required]
        [DisplayName ("Contract Total MP")]
        public int ContractMP { get; set; }

        [Editable(false)]
        public int UserID { get; set; }

        [DataType(DataType.DateTime )]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime EntryDateTime { get; set; }

    }

プロジェクト コントローラの「インデックス」アクションの先頭にロジックを配置して、ユーザーの権限を検証したいと考えています。「Svr」の場合はサービスのデータのみを表示し、権限が「Ar」の場合はエリアのデータのみを表示し、権限が「Svr-Ar」の場合はサービスとエリアのデータのみを表示します彼の権限が「すべて」の場合、すべてのデータが表示されます。

これを行うために多くの方法を試しましたが、できませんでした。MVC は初めてです。私を助けてください。よろしく。

4

1 に答える 1

0

ロールを使用してみてください。次に、次のことを簡単に確認できます。

if(Roles.IsUserInRole("Ar"))
{
  //Show data for role Ar
}

ただし、Authority フィールドでも同じことができます。簡単な方法を作るだけです:

public string GetUserAuthority(int UserID)
{
  var user = db.UserProfile.Find(id);
  return user.Authority;
}

またはメンバーシップを使用する場合:

   public string GetUserAuthority()
    {
      var user = Membership.GetUser(User.Identity.Name);
      return user.Authority;
    }

次に、コントローラー アクションをチェックインします。

if(GetUserAuthority() == "Ar")
{
//Show data for role Ar
}
于 2013-10-03T09:45:22.377 に答える