【问题标题】:Create Checking Permission function in LINQ C#在 LINQ C# 中创建检查权限函数
【发布时间】:2015-12-24 02:41:50
【问题描述】:

我创建了 1 个登录表单,此表单将检查电子邮件和密码,如果它们在数据库中键入类似信息,则重定向到 mainForm。 另外,我想创建并检查 id,如果 id = '1' => admin,则显示 mainForm,如果不显示错误消息。 因为任何人都可以登录和管理数据库中的信息 我的数据库有 1 个表,包括 7 个字段:id、电子邮件、密码、全名、性别、出生、地址 AccountBUS.Cs:

AccountManagementDataContext AccMgr = new
AccountManagementDataContext();
        public bool CheckLogin(string email, string password)
        {
            int account = (from acc in AccMgr.BasicInfos
                           where acc.email == email && acc.password == password
                           select acc).Count();
            if (account == 1)
                return true;
            else
                return false;

        }
        public IEnumerable<BasicInfo> SelectAll()
        {
            IEnumerable<BasicInfo> account = from acc in AccMgr.BasicInfos
                                             select acc;
            return account;
        }
        public bool CheckAccount(string email)
        {
            int account = (from acc in AccMgr.BasicInfos
                           where acc.email == email
                           select acc).Count();
            if (account == 1)
                return true;
            else
                return false;

        }

我怎样才能使检查 id 功能?

【问题讨论】:

    标签: c# windows forms


    【解决方案1】:
    var isAdmin = AccMgr.BasicInfos.Where(account => account.Email == email & account.Password == password).Select(account => account.Id) == 1;
    
    if(isAdmin) 
    {
        // put your logic here.
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      我不喜欢这个解决方案,它是死板和硬编码的。如果您需要多个管理员帐户怎么办?或者由于某种原因,您删除了此帐户并创建了另一个 ID==1 的帐户?

      更好的方法是添加一列 HasAdminPriviliges 然后您可以简单地检查该标志:

      bool isAdmin = AccMgr.BasicInfos.Any(acc => acc.email == email &&
                                           acc.HasAdminPrivileges == true);
      

      【讨论】:

        【解决方案3】:

        您可以使用带有角色的列。如果您先使用代码,那么您可以这样做

        添加一个枚举

        public enum Role
        {
            User = 1,
            Admin = 2
        }
        

        和模型中的一个属性

        public virtual Role Role {get; set; }
        

        然后

        bool isAdmin = AccMgr.BasicInfos.Any (acc => acc.email == email &&
                                              acc.Role == Role.Admin);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-07
          • 2019-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-27
          • 1970-01-01
          相关资源
          最近更新 更多