PDA

View Full Version : سوال: مشکل در MasterPage



CATY_minasian
سه شنبه 27 مرداد 1388, 16:47 عصر
سلام دوستان
من واسه صفحاتم از MasterPage استفاده کردم و در web.config واسه اینکه کاربران بدون login کردن نتونن به صفحه ای دسترسی داشته باشن کدای زیرو اضافه کردم:

<"authentication mode="Forms>
<"forms loginUrl="login.aspx>
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>

ولی از وقتی این کارو کردم MasterPage اعمال نمیشه
کسی میدونه مشکل کجاست؟

hjran abdpor
سه شنبه 27 مرداد 1388, 19:20 عصر
دوست عزیز
اگه درست حدس زده باشم شما صفحه اصلی را فیلتر کردید اینکار اشتباه است شما نباید صفحه اصلی یا همون index را فیلتر کنید . شما باید صفحه اصلی را بهع کاربر نشان بدیهد ، بعد تصمیم بگربد که که چکار بهاش کنید .
دستورات داخل web .config را عوض کنید .

hjran abdpor
سه شنبه 27 مرداد 1388, 19:23 عصر
دوست عزیز
اگه درست حدس زده باشم شما صفحه اصلی را فیلتر کردید اینکار اشتباه است شما نباید صفحه اصلی یا همون index را فیلتر کنید . شما باید صفحه اصلی را بهع کاربر نشان بدیهد ، بعد تصمیم بگربد که که چکار بهاش کنید .
دستورات داخل web .config را عوض کنید .


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

مهدی کرامتی
سه شنبه 27 مرداد 1388, 21:16 عصر
تنظیمی که در Web.Config تعیین کرده اید تمام فایل های موجود در آن فولدر را نیازمند به لاگین معرفی می کند. این تنظیم به Master Page ربطی ندارد.

enmoslem64
چهارشنبه 28 مرداد 1388, 02:32 صبح
<"location path=”masterpage.master>

<system.web>

<autorization>

<"*"=allow users>

</autorization>

</system.web>

</location>

</configuration>

enmoslem64
چهارشنبه 28 مرداد 1388, 02:34 صبح
من خوب تایپ کردم اما به هم ریخته شد خودت مرتب کن به امید خدا جواب می ده

CATY_minasian
چهارشنبه 28 مرداد 1388, 09:42 صبح
سلام
میشه بیشتر توضیح بدین که باید چی کار کنم؟یعنی باید ورود به سایتو در صفحه index بذارم؟ تو web.config چه تنظیماتی رو باید انجام بدم که کاربر تا عضو نشده رو هر لینکی که کلیک کرد به صفحه لاگین بیاد؟
ممنون

alireza244
چهارشنبه 28 مرداد 1388, 10:13 صبح
با سلام به شما

فایل webconfig رو اینجوری تنظیم کن



<authentication mode="Forms">
<forms name=".COOKIEDEMO" loginUrl="~/Login.aspx" protection="All" timeout="60" path="/" defaultUrl="~/Default.aspx"/>
</authentication>
<authorization>
<allow users="*"/>
<deny users="?"/>
</authorization>



بعد نام صفحه هایی مه میخوایی دسترسی با login داشته باشند رو به این صورت تو webConfig معرفی کن




<location path="Default.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location >


این کد را برای هر صفحه که میخوایید دسترسی محدود بشه تکرار کن در این کد ما صفحه Default.aspx را محدود کردیم

حالا باید کدی بنویسی که وقتی کاربر login کرد بتونه وارد صفحات محدود شده هم بشه
این کد رو تو صفحه login مینویسی برای کلید "ورود"


DateTime expire = DateTime.Now;
if (chkPersistent.Checked)
{
expire = expire.AddYears(5);
}
else
{
expire = expire.AddMinutes(30);
}
FormsAuthenticationTicket userTicket = new FormsAuthenticationTicket(1, txtUser.Text, DateTime.Now, expire, chkPersistent.Checked, member.Roles, FormsAuthentication.FormsCookiePath);
string encodesData = FormsAuthentication.Encrypt(userTicket);
HttpCookie userCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encodesData);
//if (userTicket.IsPersistent)
//{
userCookie.Expires = userTicket.Expiration;
Response.Cookies.Add(userCookie);
//}
Response.Redirect(FormsAuthentication.GetRedirectU rl(txtUser.Text, true), true);


کد زیر رو هم توی فایل Global.asax مینویسی



protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
string userCookieName = FormsAuthentication.FormsCookieName;
HttpCookie userCookie = HttpContext.Current.Request.Cookies[userCookieName];
if (userCookie == null) return;
FormsAuthenticationTicket userTicket;
try
{
userTicket = FormsAuthentication.Decrypt(userCookie.Value);
}
catch (Exception)
{
return;
}
if (userTicket == null) return;

FormsIdentity userID = new FormsIdentity(userTicket);
System.Security.Principal.GenericPrincipal userPrincipal = new System.Security.Principal.GenericPrincipal(userID, "");
HttpContext.Current.User = userPrincipal;
}



شما میتونید حتی role برای صفحه ها تون تعریف کنید و سطوح دسترسی تعیین کنید

enmoslem64
چهارشنبه 28 مرداد 1388, 12:14 عصر
من فکر می کنم همون قطعه کدی که خ.دتون بالا نوشتید رو به اضافه این قطعه کدی که من نوشتم رو در پایین صفحه web.config اضافه کنید زیر اونجایی که نوشته شده<system.web> به احتمال زیاد حل بشه.

CATY_minasian
یک شنبه 01 شهریور 1388, 18:13 عصر
دوستان از پاسخ همه ممنونم