نمایش نتایج 1 تا 8 از 8

نام تاپیک: چطور asp.net identity رو به الگوی repository انتقال بدم؟

  1. #1

    چطور asp.net identity رو به الگوی repository انتقال بدم؟

    سلام

    خوب در ابتدا من اصلآ در مورد asp.net identity چیزی نمیدونستم و من برای اینکار رفتم و کتاب pro asp.net mvc 5 platform بخش های 13 تا 15 رو خوندم که مربوط به Identity هستش و تونستم گام به گامauthentication و authorization رو ایجاد کنم براساس role ها ولی فعلآ توی پروژه دندان پزشکی ننوشتم .در واقع برای یادگیری تو پروژه دیگه نوشتم.و میخوام بدونم چطوری Identity رو ببرم به الگوی repository ؟

    لینک پروژه : https://ufile.io/yafjw

    با تشکر
    آخرین ویرایش به وسیله user1000 : شنبه 10 تیر 1396 در 15:07 عصر

  2. #2

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟

    یه سوالی دیگه آیا من باید تمام پکیج های identity رو در datalayer هم نصب کنم ؟ به دلیل استفاده از الگوی repository منظورم بود.

  3. #3

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟


  4. #4

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟

    اشتباه شد .....................

  5. #5

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟

    سلام ممنون از پاسختون

    حقیقتش من این سایت رو دیده بودم یه خورده تحقیق کردم و تو سایت stackoverflow دیدم بعضی با این قضیه مشکل دارند و یکی پاسخ داده بود که

    مشکلی نداره که identity تو الگو ریپوزیتوری نباشه در واقع این کارش فقط کار با یوزر ها و احراز هویتشون هست نیاز به الگوری ریپوزیوتری نداره اما از

    طرفی دیگه من الان دو تا context دارم کی یکی رو میخوام برای کار با احراز هویت بزارم و یکی دیگه هم برای پروژه اصلی که طراحی سایت دندانپزشکی هست

    حالا بنظرتون من باید اون یوزر و role که دارم تو identity کار میکنم رو ببرم تو حالت repository درسته ؟ در واقع فقط همین دو کلاس باید برن تو الگوی ریپوزیتوری درسته ؟


    با تشکر

  6. #6

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟

    بنظر بنده هم باشه ، نیازی نیست شما Identity در Repository پیاده سازی کنید .
    اگر منظورتون از 2 Context هم این هستش که 2 دیتابیس داشته باشید ، پیشنهاد بنده این هست که اینکارو رو نکنید و همه پروژه رو داخل 1 دیتابیس Table هاش رو داشته باشید ; پروژه های بزرگی مثل Orchard , NopCommerce رو هم اگر ببینید 1 دیتابیس دارن .
    معمولا چون Identity رو با Entity Framework استفاده میکنن ، نیازی به Repository و Decoupling نیست و میتونید از UserManager و RoleManager استفاده کنید .

  7. #7

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟

    شما می توانید یک دیتابیش داشته باشید اما از دو DbContext جدا برای مدیریتش استفاده کنید. پس می توانید یک DbContext جدا برای Identity و یکی هم برای سایر قسمتها در نظر بگیرید. به این روش Bounded Context گفته میشه.

    شما نمی توانید هیچوفت به طور صد در صد Identity را از بقیه لایه ی دیتا جدا کنید. هر وقت از ApplicationUser در یک کلاس دیگر استفاده کنید باید Indetity رو به پروژه رفرنس بدید. (چون ApplicationUser از IdentityUser ارث بری کرده که دورن Identity تعریف شده)

    ضمن اینکه به دلیل روشی که دات نت کار میکنه باید Identity رو به هر پروژه ای با اون کار میکنه اضافه کنید. تنها روشی که میشه چنین کاری انجام داد اینه که شما اینترفیس های Identity رو از Core بگیرید و بقیه ی کدهاشو خودتون دستی بنویسید. که منطقی به نظر نمیرسه.

    فقط از یک DbContext که همون IdentityDbContext هست استفاده کنید.

  8. #8

    نقل قول: چطور asp.net identity رو به الگوی repository انتقال بدم؟

    ممنون از هر دو دوست عزیز جهت پاسخشان

    من از دو context داریم استفاده میکنم یکی در datalayer و دیگری در UI در لایه دیتا برای برای کار با کل کلاس ها است و datacontext ای که من در لایه UI استفاده کردم
    با Identity سروکار داره. همونطور که میبینید من از identitydbcontext در هر دو context دارم استفاده میکنم.

    context مربوط به لایه دیتا



     public class DentistryContext : IdentityDbContext
    {
    public DentistryContext():base("DentistryDB")
    {
    }

    public DentistryContext(string DentistryDB) : base("DentistryDB")
    {
    }

    public DbSet<Menu> Menu { get; set; }
    public DbSet<Page> Page { get; set; }
    public DbSet<PageGroup> PageGroup { get; set; }
    public DbSet<PageTagMap> PageTagMap { get; set; }
    public DbSet<Tag> Tag { get; set; }
    public DbSet<Author> Author { get; set; }
    public DbSet<User> User { get; set; }
    public DbSet<Schedule> Schedule { get; set; }
    public DbSet<Role> Role { get; set; }
    public DbSet<Office> Office { get; set; }
    public DbSet<Appoinment> Appoinment { get; set; }
    public DbSet<Secretary> Secretary { get; set; }
    public DbSet<Gallery> Gallery { get; set; }
    public DbSet<GalleryItem> GalleryItem { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    Database.SetInitializer<DentistryContext>(null);
    base.OnModelCreating(modelBuilder);
    }

    }


    context مربوط به لایه UI



    public class AppIdentityDbContext : IdentityDbContext<User>
    {

    public AppIdentityDbContext() : base("DentistryDB")
    {
    }
    public static AppIdentityDbContext Create()
    {
    return new AppIdentityDbContext();
    }

    static AppIdentityDbContext()
    {
    Database.SetInitializer<AppIdentityDbContext>(new IdentityDbInit());
    }


    }



    public class IdentityDbInit : DropCreateDatabaseIfModelChanges<AppIdentityDbCont ext>
    {

    protected override void Seed(AppIdentityDbContext context)
    {
    PerformInitialSetup(context);
    base.Seed(context);
    }

    public void PerformInitialSetup(AppIdentityDbContext context)
    {
    AppUserManager userMgr=new AppUserManager(new UserStore<User>(context));
    AppRoleManager roleMgr=new AppRoleManager(new RoleStore<Role>(context));

    string roleName="xxxx";
    string userName="cccc";
    string password="aaaa";
    string email="admin@example.com";

    if (!roleMgr.RoleExists(roleName))
    {
    roleMgr.Create(new Role(roleName));
    }
    User user=userMgr.FindByName(userName);
    if (user == null)
    {
    userMgr.Create(new User { UserName = userName, Email = email }, password);
    user = userMgr.FindByName(userName);
    }
    if (!userMgr.IsInRole(user.Id, roleName))
    {
    userMgr.AddToRole(user.Id, roleName);
    }
    }
    }


تاپیک های مشابه

  1. چگونه می توانم asp.net 2005 رو به asp.net2010 انتقال بدهم
    نوشته شده توسط karimi84 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: سه شنبه 26 شهریور 1392, 15:01 عصر
  2. پاسخ: 4
    آخرین پست: چهارشنبه 20 دی 1391, 14:07 عصر
  3. پاسخ: 4
    آخرین پست: پنج شنبه 10 شهریور 1384, 16:28 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •