View Full Version : محدودیت کاربران براساس نوع کاربری
Wily_Fox
جمعه 31 خرداد 1392, 09:45 صبح
با سلام و خسته نباشید
اگه بخوام 4 الی 5 نوع کاربر تو سیستم تعریف کنم. چطور به اینها مجوز دسترسی صادر کنم؟
من خودم این مد نظرم هست:
یه مدل دیگه ای ایجاد کنم به نام UserType سپس UserTypeId رو در هنگام تعریف کاربر در جدول UserProfile ذخیره کنم. هنگامی که کاربر به کنترل ها مراجعه میکنه با استفاده از UserTypeId اون رو به کنترل ها هدایت کنم. اگر مجاز بود بتونه View رو ببینه در غیر اینصورت از دسترسی به این کنترل محدود بشه.
یا اینکه UserName های مورد نظر رو به شکل زیر بر روی کنترل بنویسم:
[Authorize(Users="admin")]
خوب این روش در واقع واسه چند کاربر محدود خوبه اما اگه بخوام Nتا admin داشته باشم چیکار باید بکنم؟
چگونه در یک سیستم از چندین نوع کاربر استفاده کنیم؟
متشکرم
mo.esmp
جمعه 31 خرداد 1392, 13:47 عصر
باید از Role استفاده کنی و برای کاربرانت Role تعریف کنی و مجوز دسترسی ها رو بر اساس Roleها صادر کنی. به جای استفاد از [Authorize(Users="")] از [Authorize(Roles = "")] استفاده کن.
Wily_Fox
جمعه 31 خرداد 1392, 16:01 عصر
خوب Role ها رو چطوری مقدار دهی کنم؟
از طرفی به هرکاربر چطوری Role رو اختصاص بدم؟
در واقع جدول های webpages_Roles و webpages_UsersInRoles رو چطور مقداردهی کنم وقتی مدل اینها رو نداریم؟ یعنی در DbContext اینا موجود نیستند و اینا توسط ASP.Net ایجاد میشوند.
Wily_Fox
جمعه 07 تیر 1392, 11:16 صبح
کسی پاسخی در این باره نداره؟
میشه بیشتر توضیح بدبد؟
mo.esmp
جمعه 07 تیر 1392, 12:03 عصر
در web.config در بخش web اینو اضافه کنید
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
برای ایجاد Role:
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
برای اختصاص Role:
Roles.AddUserToRole("Admin", "Administrator");
آنتریوم
جمعه 07 تیر 1392, 22:13 عصر
من خودم تازه کارم ببین این به دردت می خوره:)
http://www.asp.net/mvc/tutorials/older-versions/security/authenticating-users-with-forms-authentication-cs
Wily_Fox
شنبه 08 تیر 1392, 11:50 صبح
دستور
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
در کجا بنویسم؟ منظورم اینه هرجایی میشه نوشت؟ یا اینکه بهتره در InitializeSimpleMembershipAttribute نوشته بشه؟
و همچنین اختصاص دادن
Roles.AddUserToRole("Admin", "Administrator");
آیا پس از ایجاد کاربر یعنی پس از
WebSecurity.CreateUserAndAccount(model.UserName, model.Password)
بنویسم؟
Saeed_m_Farid
شنبه 08 تیر 1392, 16:10 عصر
... آیا پس از ایجاد کاربر یعنی پس از
WebSecurity.CreateUserAndAccount(model.UserName, model.Password)
بنویسم؟
آری، دقیقاً همونجا باید بنویسید.
Wily_Fox
یک شنبه 09 تیر 1392, 08:38 صبح
دستور
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
در کجا بنویسم؟ منظورم اینه هرجایی میشه نوشت؟ یا اینکه بهتره در InitializeSimpleMembershipAttribute نوشته بشه؟
mo.esmp
یک شنبه 09 تیر 1392, 11:54 صبح
هرجایی میتونیی بنویسی دوست داری تو InitializeSimpleMembershipAttribute بنویس.
Wily_Fox
یک شنبه 09 تیر 1392, 12:50 عصر
دستت درد نکنه.
الان اختصاص دادم. اما وقتی می خوام براساس Role
[Authorize(Roles = "Administrator")]
[InitializeSimpleMembership]
کاربران بتونن وارد کنترلر ها یا اکشن ها بشن خطای زیر رو میده:
You must call the "WebSecurity.InitializeDatabaseConnection" method before you call any other method of the "WebSecurity" class. This call should be placed in an _AppStart.cshtml file in the root of your site.
Wily_Fox
دوشنبه 10 تیر 1392, 11:42 صبح
دوستان عزیز این رفع خطا رو بهم یاد بدید ممنون میشم از همتون...
mo.esmp
دوشنبه 10 تیر 1392, 13:45 عصر
جاشون رو عوض کن اول InitializeSimpleMembership رو بذار
Wily_Fox
دوشنبه 10 تیر 1392, 15:08 عصر
دستت درد نکنه مشکل بکلی حل شد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.