مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ali

عضویت از 1392/03/25

Custom Role Provider در MVC

  • پنجشنبه 18 شهریور 1395
  • 15:36
تشکر میکنم

با سلام

من برای مدیریت کاربران در mvc می خوام از CustomRoleProvider استفاده کنم.

در نتیجه از دو کلاس با رابطه جند به جند به شکل استفاده کردم :

 

 public class Role
    {
        public Role()
        {
            this.Users =new  HashSet<User>();
        }
        [Key]
        public int RoleID { get; set; }
        [Display(Name = "نام نقش")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        public string RoleName { get; set; }
        [Display(Name = "عنوان نقش")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        public string RoleTitle { get; set; }
        public virtual ICollection<User> Users { get; set; }

    }

 

public class User
    {
        public User()
        {
            this.Roles = new HashSet<Role>();
        }
        [Key]
        public int UserID { get; set; }
        [Display(Name = "نام کاربری")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        [MinLength(6,ErrorMessage ="حداقل کاراکترها 6 رقم می باشد")]
        public string UserName { get; set; }
        [Display(Name = "نام")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        public string UserFName { get; set; }
        [Display(Name = "نام خانوادگی")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        public string UserLName { get; set; }
        public bool UserSex { get; set; }
        [Display(Name = "کد ملی")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        public string UserNCode { get; set; }
        [Display(Name = "تلفن همراه")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        [MaxLength(10, ErrorMessage = "حداکثر شماره باید 10 رقم باشد")]
        [StringLength(10, ErrorMessage = "تعداد شماره ها باید 10 رقم باشد")]
        public string UserCellphone { get; set; }

 

        [Display(Name = "ایمیل")]
        [DataType(DataType.EmailAddress, ErrorMessage = "ایمیل به شکل درست وارد نشده است")]
        public string UserEmail { get; set; }
        [Display(Name = "آدرس")]

 

        public string UserAddress { get; set; }
        [Display(Name = "کد کاربری")]
        //[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        public int UserCode { get; set; }

 

 

        [Display(Name = "رمز عبور")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        [MinLength(6, ErrorMessage = "حداقل تعداد باید شش رقم باشد")]
        public string UserPassword { get; set; }
        [Display(Name = "شماره کارت بانکی")]
        //[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        [MinLength(16, ErrorMessage = "حداقل تعداد باید 16 رقم باشد")]
        public string UserBankCardNumber { get; set; }
        [Display(Name = "شماره حساب")]
        public string UserAccountNumber { get; set; }
        [Display(Name = "فعال")]
        public bool UserIsActive { get; set; }
        [Display(Name = "تاریخ عضویت")]
        public DateTime UserMemberingDate { get; set; }

 

 
        [Display(Name = "عکس پرسنلی")]
        public string UserImageName { get; set; }
        [Display(Name = "عکس کارت ملی")]
        public string UserNCodeImageName { get; set; }
        [Display(Name = "عکس دفترچه حساب")]
        public string UserAccountImageName { get; set; }

        public virtual ICollection<Role> Roles { get; set; }

    }

در تنظیمات webconfig من مشکلی ندارم و حتی با جدوال با ارتباط یک به چند مدیریت کاربران پیاده سازی کردم ولی در رابطه چند به چند یکسری مشکل دارم :

1- چگونه هنگام معرفی کاربر جدید نقش آن را نیز به جدول کاربر اضافه کنم. (در واقع روش اضافه کردن داده به جدول برای کلاسهای دارای نقش چند به چند چگونه باید باشد)

2- رویداد GetRolesForUser  رو باید چگونه پیاده سازی کنم تا با خطا مواجه نشم.

با تشکر فراوان

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 18 شهریور 1395
  • 16:01

1 - باید جدولی درست کنید برای نگهداری مقش کاربران مثلا کد نقش و کد کاربر

2 - خروجی متد آرایه است و میتونید با Join تمام RoleName کاربر را برگردانید

کاربر سایت

ali

عضویت از 1392/03/25

  • پنجشنبه 18 شهریور 1395
  • 16:19
همون طور که در کد کلاس ها می بینید رابطه چند به چند ایجاد شده، و در sql هم اون جدول واسط ساخته میشه. امکان داره نمونه کد برام بفرستید. 1_ دادن صفت role به یک کاربر هنگام ثبت اون کاربر 2_ نمونه کد برای قسمت ، role provider
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 18 شهریور 1395
  • 16:21

متاسفانه نمونه اماده ندارم

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)