• 1400/03/22

وجود چند جدول کاربر برای لاگین :

سلام استاد عزیز وقتتون بخیر

دو تا سوال داشتم خدمتتون:

اول اینکه من برای کاربران بر اساس نقش های مختلف چند تا جدول جداگانه دارم که همشون یدونه کلید خارجی به جدول Roles دارن. الان برای شناسایی نقش توسط سیستم تو قسمت کلاس roleprovider ای که ساختم، در متد GetRolesForUser فقط می تونم به یک تیبل اشاره کنم (مثال تیبل Users) و ازش بخوام عنوان سیستمی نقش موجود تو اون تیبل رو به من برگردونه،مثلا:

  return db.Users.Where(u => u.UserName == username).Select(u => u.Roles.RoleName).ToArray();

 الان چه جوری میتونم بهش بگم اگه کاربر با هر یوزرنیمی و از هر تیبلی لاگین کرد، با توجه به تیبلش  برو عنوان سیستمی رو از جدول Roles برام بیار نه فقط بر اساس تیبل Users؟

سوال دومم مربوط به اینه که چجوری تو view بگم اگه کاربر لاگین بود و فلان نقش رو داشت این کار رو بکن ، نه فقط اینکه لاگین بودنش رو چک کنه بلکه نقششم چک کنه؟

تشکر

  • 1400/03/22
  • ساعت 14:57

سلام 

باید کوئری بزنید و نام کاربری رو در شرط قرار دهید تا بره بیاره 

کاربر لاگین شده را بدست بیارید مشخص میشه 

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

 


  • 1400/03/22
  • ساعت 16:03

استاد بالاخره شرط رو باید رو یک تیبل بزنم دیگه درسته؟از کجا بدونم کاربر لاگین شده برای کدوم تیبله که من نام کاربری رو تو شرط بذارم


  • 1400/03/22
  • ساعت 16:37

مگه در جدول کاربران نیست ؟

همون جدول یاید بزنید


  • 1400/03/22
  • ساعت 17:15

خیر چند تا جدوله. فکر کنم منظورمو  اول درست خدمتتون نرسوندم.

من چند تا جدول کاربر دارم، مثل Admins، Users، Consultants و هرکدوم فیلدهای مربوط به خودشو داره، ولی هر سه تا یه کلید خارجی RoleID به جدول Roles دارند که تو هرجدول RoleID یک عدد مشخص و ثابته .

الان وقتی لاگین میشن برای شناسایی نقش توسط سیستم تو قسمت کلاس roleprovider ای که ساختم، در متد GetRolesForUser نمیدونم اون یوزرنیم که باهاش اومده برای کدوم تیبله که من ازش نقششو استخراج کنم و شرطشو تو کلاس RoleProvider چجور بررسی کنم که با یک if کوئری مربوط به تیبل خودشو بزنه.


  • 1400/03/22
  • ساعت 17:19

تاحالا چنین کاری نکردم 

کاربران باید در یک جدول باشند و با نقش تفکیک شوند 


logo-samandehi