PDA

View Full Version : آموزش: استفاده از زول بندی



Mohammad_dn
جمعه 30 آبان 1393, 23:34 عصر
با سلام

به درخواست یکی از دوستان میخوام آموزش مختصری در رابطه با رول بندی براتون بزارم...

ابتدا شما باید بانک اطلاعاتیتونو تنظیم کنید..در واقع باید تیبل های مورد نیاز (پروفایل ..رول ها و... و در کل ممبرشیپ ) رو توی دیتابیستون ایجاد کنید ..برای اینکار بعد از ایجاد بانک به درایو C برید و عبارت aspnet_regsql.exe رو جستجو و اجرا کنید..



بر روی Next کلیک کنید
گذینه ی Configure SQL Server For Application services رو انتخاب و Next رو بزنید
در پنجره ی باز شده آدرس سرور رو وارد کرده و دیتابیس مورد نظر رو انتخاب کنید..(در صورت داشتن رمز گذینه ی SQL Server authentication رو انتخاب کنید و بعد یوزر و پس رو وارد کنید) و Next رو بزنید
دوباره بر روی Next کلیک کنید و منتظر بمانید تا تنظیمات بر روی دیتابیس شما اعمال شود
بر روی Finish کلیک کنید


حالا اگه نگاه کنید توی دیتابیس شما 11 تیبل جدید اضافه شده..

کد زیر رو در فایل Web.config سایتتون قبل از <system.web> قرار بدید:


<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="YourConnectionString" providerName="System.Data.SqlClient"/>
</connectionStrings>


همچنین کد زیر رو داخل <system.web> بزارید

<roleManager enabled="true" />

کانکشن استرینگ بانک خودتونم وارد کنید...خوب تا اینجا تنظیمات دیتابیس کاملا انجام شده..اما یه سری دستورات برای مدیریت رول ها

ابتدا فضای نام زیر رو به صفحتون اضافه کنید:

using System.Web.Security;


ایجاد یک رول
Roles.CreateRole("Admin");

حذف یک رول
Roles.DeleteRole("Admin");

برسی موجودیت یک رول
Roles.RoleExists("Admin");

نسبت دادن یک رول به یک کاربر:
Roles.AddUserToRole("Mohammad", "Admin");

نسبت دادن یک رول به چند کاربر:

string[] strb = new string[2];
strb[0] = "Mohammad";
strb[1] = "Mohammad_dn";
Roles.AddUsersToRole(strb, "Admin");


نسبت دادن چند رول به یک کاربر:

string[] strb = new string[2];
strb[0] = "Admin";
strb[1] = "Deny";
Roles.AddUserToRoles("Mohammad_dn", strb);


نسبت دادن چند رول به چند کاربر:

string[] strb = new string[2];
strb[0] = "Admin";
strb[1] = "User";
string[] strb2 = new string[2];
strb[0] = "Mohammad";
strb[1] = "Mohammad_dn";
Roles.AddUsersToRoles(strb2, strb);


برای حذف رول کاربرا هم به همین شکل

حذف یک رول از یک کاربر
Roles.RemoveUserFromRole("Mohammad_dn", "Admin");

حذف یک رول از چند کاربر

string[] strb2 = new string[2];
strb[0] = "Mohammad";
strb[1] = "Mohammad_dn";
Roles.RemoveUsersFromRole(strb2, "Admin");


حذف چند رول از یک کاربر

string[] strb = new string[2];
strb[0] = "Admin";
strb[1] = "User";
Roles.RemoveUserFromRoles("Mohammad_dn", strb);


حذف چند رول از چند کاربر

string[] strb = new string[2];
strb[0] = "Admin";
strb[1] = "User";
string[] strb2 = new string[2];
strb[0] = "Mohammad";
strb[1] = "Mohammad_dn";
Roles.RemoveUsersFromRoles(strb2, strb);



اما گاهی شما میخواید مثلا به صفحات یه پوشه ی خاص سطح دسترسی بدید..مثلا میخواید برای صفحاتی که داخل پوشه ی Admin هستن اینکارو انجام بدید

ابتدا یک فایل web.config داخل پوشه اضافه کنید...بعد کد زیرو داخلش قرار بدید


<authorization>
<deny users="?"/>
<allow roles="Admin,FullAdmin"/>
<deny users="*"/>
</authorization>


با اینکار فقط کاربرانی که دسترسی Admin و FullAdmin دارن میتونن وارد صفحات این پوشه بشن



موفق ، پیروز و سربلند باشید

amir_T_2008
شنبه 01 آذر 1393, 01:43 صبح
فکر کنم اینا برای اون کار من که بتونه کاربر به کل صفحه دسترسی داشته باشه اما فقط یک رول بتونه از لینک دانلود استفاده کنه کاربردی نداشته باشه اما همین که قرار دادید ممنون و مطمئنن گره از کار بقیه دوستان باز میکنه

Mohammad_dn
شنبه 01 آذر 1393, 11:55 صبح
چرا کاربرد داره..فقط من یه چیزو یادم رفت بگم

برای اینکه بفهمید کاربر ادمین (یا هر رول دیگه ای) هست یا نه

Roles.IsUserInRole("Mohammad_dn", "Admin");


مثلا تو همون شرطی که توی این(http://barnamenevis.org/showthread.php?476453) تاپیک گفتم..میتونید به شکل زیر عمل کنید..

if (Roles.IsUserInRole("Mohammad_dn", "Admin"))
{
//دستورات
}


در این صورت اگر کاربر ادمین باشه دستورات اجرا میشه