0 امتیاز
وقت بخیر دوستان.

نیاز دارم برای پروژه م سطوح دسترسی بزارم. به نظرتون بهترین روش برای این کار چیه.

نیاز دارم تا تعیین کنم کدوم کاربر میتونه کدوم کارو انجام بده. مثلا باز کردن یه فرم خاص. درج رکورد جدید . ویرایش رکورد. حذف رکورد. چاپ لیست و بعضی از منو ها و زیر منو ها.

خودم این روش مد نظرم هست. که برای هر عمل هر فرمی و خود فرم و زیر منو هام یک ستون در نظر بگیرم و یک ستون هم آی دی کاربر.

بعد هروقت کاربر لاگین کنه بره و مقادیر ردیف مربوط به خودشو بخونه و در یک کلاس که متغییر های ایستاتیک داره مقدار دهی کنه. بعد هر فرمی که باز میشه مقادیر اون کلاس رو چک کنه که اگه فالس بود اون دکمه رو غیر فعال کنه .

به نظرتون این روش بهتره یا راه حل دیگه ای مد نظرتون هست.؟؟ البته تا الان نزدیک سیصد تا باید ستون بسازم با این روش.
بسته شده

3 پاسخ

+1 امتیاز
 
بهترین پاسخ

من از این روش استفاده میکنم :

 public static int userCode = 0;
        public static string userName = string.Empty;
        public static bool userAdmin = false;
        public static bool userActive = false;

        //public static SqlConnection MyConnection = new SqlConnection("Data Source=172.21.69.10;Initial Catalog=Boudget;Persist Security Info=True;User ID=sa;Password=9960984");
        public static SqlConnection MyConnection = new SqlConnection(@"Data Source=BABAK-PC\SQLEXPRESS;Initial Catalog=Boudget;Integrated Security=True");
        public static SqlDataAdapter da;
        public static SqlDataReader dr;
        public static SqlCommand cmd;
        public static string sqlString = string.Empty;

 public static bool accessMenu(string menuName)
        {
            if (userAdmin)
            {
                return true;
            }

            if (MyConnection.State==System.Data.ConnectionState.Open)
            {
                MyConnection.Close();
            }

            sqlString = "select * from tblUsers where (UserCode=" + userCode + ") AND " + menuName + " =1 ";

            cmd = new SqlCommand("select * from tblUsers where (UserCode=" + userCode + ") AND " + menuName + " =1", MyConnection);

            MyConnection.Open();

            dr = cmd.ExecuteReader();

            if (dr.Read())
            {
                return true;
            }
            else
            {
                MessageBoxFarsi.Show("کاربر مورد نظر دسترسی ندارد", "خطا در دسترسی", MessageBoxFarsiButtons.OK, MessageBoxFarsiIcon.Error);

                return false;
            }

در کد بالا MenuName  در جدول دسترسی وجود داره و به ازای هر ایتمی یا قسمتی که میخواین دسترسی بدین باید اسم اون رو در دیتا بیس براش فیلد از نوع bit  ایجاد بکنید

ممنون . روش جالبیه. بعد این که بهتر نیست یکبار همه اطلاعات رو لود کنیم بعد از اونا استفاده کنیم. به جای اینکه هی کوئری اجرا کنیم؟
توسط (197 امتیاز) 11
شما که همیشه نیاز به بررسی سطح دسترسی نداری . هروقت نیاز شد فراخوانی میشه .
توسط (3,062 امتیاز) 1
+1 امتیاز
یک جدول برای سطح دسترسی تعریف کنید و به ازای هر ایتمی که میخواین دسترسی بدین یک فیلد از نوع bit  تعریف کنید . اگر True  باشه دسترسی و اگر نباشه عدم دسترسی . البته باید تابع مربوطه رو تعریف کنید . اگر نتونستین بگین تا کدش رو براتون بذارم
+1 امتیاز
توضیح اینکه تابع رو باید زمانیکه روی قسمت مورد نظر کلیک می کنید فراخوانی کنید  تا با استفاده از نام یوزر یا کد یوزر و مقدار True یا False  تعریف شده در اون قسمت برای یوزر دسترسی رو چک کنه
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,920 کاربر

دسته بندی ها

...