PDA

View Full Version : سوال: سوال در رابطه با فایل web.config



arash69
دوشنبه 15 اردیبهشت 1393, 12:56 عصر
سلام به همه دوستان؛
سوالی در رابطه با فایل web.config داشتم؛
فرض کنید دو نوع کاربری متفاوت داریم توی سایتمون، یکی مدیریت یکی هم کاربر عادی.
زمانی که صفحه ای درخواست میشه که در سطح مدیریت هست؛ در صورت لاگین نبودن، به صفحه لاگین مربوط به مدیریت هدایت میشه.
اما در صورتی که صفحه ای در سطح کاربری درخواست بشه و شخص لاگین نکرده باشه، باز هم به همون صفحه لاگین مدیریت هدایت میشه.
میخوام اینظوری نباشه و در حالت دوم به یه صفحه دیگه هدایت بشه.
برای اینکه اینطوری باشه؛ چیکار باید کرد؟ آیا از طریق فایل web.config این اتفاق میوفته؟

majidnazari65
دوشنبه 15 اردیبهشت 1393, 13:52 عصر
سلام.
فکر نمیکنم در web.config بشه صفحات لاگین برای نقشهای مختلف تعیین کرد. اگر همه کاربران شما اعم از مدیر و کاربر معمولی در یک جدول هستن و محدودیتی در این زمینه ندارید بهتره از یک صفحه لاگین استفاده کنید. به هر حال نقشها بعد از لاگین کردن کاربر معنی پیدا میکنه.
امااگر حتما باید روش چند صفحهلاگین استفاده کنید روش زیر جواب میده.
شما در web.config یک صفحه رو به عنوان صفحه لاگین معرفی کنید تا کاربران وارد نشده از صفحاتی که اجازه دسترسی ندارن به این صفحه وارد بشن. همچنین اون صفحه ای که کاربر میخواسته واردش بشه به صورت querystring و با نام ReturnUrl به صفحه ورود ارسال میشه. شما میتونیددر رویداد Page_load این صفحه ورود ReturnUrl رو بررسی کنید و بر اساس اون کاربر رو به صفحه لاگین کاربر معمولی و یا مدیر redirect کنید:
مثلا اگه صفحات مدیریت تو مسیر /admin/ هستن و صفحات یوزر توی پوشه /user/ میتونید به شیوه زیر توی page_load صفحه لاگین اصلی کاربر رو به صفحه لاگین مرتبط ارسال کنید:

protected void Page_Load(object sender, EventArgs e)
{
char[] chs = {'/'};
string[] strs = Request["ReturnUrl"].Split(chs);




if (strs[1] == "Admin")
{
Response.Redirect(@"\Admin\Login.aspx");
}
else if(strs[1] == "Users")
{
Response.Redirect(@"\Users\Login.aspx");
}
}

arash69
دوشنبه 15 اردیبهشت 1393, 19:17 عصر
سلام.
فکر نمیکنم در web.config بشه صفحات لاگین برای نقشهای مختلف تعیین کرد. اگر همه کاربران شما اعم از مدیر و کاربر معمولی در یک جدول هستن و محدودیتی در این زمینه ندارید بهتره از یک صفحه لاگین استفاده کنید. به هر حال نقشها بعد از لاگین کردن کاربر معنی پیدا میکنه.
امااگر حتما باید روش چند صفحهلاگین استفاده کنید روش زیر جواب میده.
شما در web.config یک صفحه رو به عنوان صفحه لاگین معرفی کنید تا کاربران وارد نشده از صفحاتی که اجازه دسترسی ندارن به این صفحه وارد بشن. همچنین اون صفحه ای که کاربر میخواسته واردش بشه به صورت querystring و با نام ReturnUrl به صفحه ورود ارسال میشه. شما میتونیددر رویداد Page_load این صفحه ورود ReturnUrl رو بررسی کنید و بر اساس اون کاربر رو به صفحه لاگین کاربر معمولی و یا مدیر redirect کنید:
مثلا اگه صفحات مدیریت تو مسیر /admin/ هستن و صفحات یوزر توی پوشه /user/ میتونید به شیوه زیر توی page_load صفحه لاگین اصلی کاربر رو به صفحه لاگین مرتبط ارسال کنید:

protected void Page_Load(object sender, EventArgs e)
{
char[] chs = {'/'};
string[] strs = Request["ReturnUrl"].Split(chs);




if (strs[1] == "Admin")
{
Response.Redirect(@"\Admin\Login.aspx");
}
else if(strs[1] == "Users")
{
Response.Redirect(@"\Users\Login.aspx");
}
}

ممنون از ایده ی خوبتون.
راستش بعد از طرح سوال در اینجا؛ تقریبا میشه گفت همون روشی که در ابتدا مطرح کردین رو کار کردم.