PDA

View Full Version : مشکل با کوکی(لطفا کمکم کنید.)



minamorsali
دوشنبه 16 شهریور 1388, 15:58 عصر
من خودم صفحه ورودمو ساختم و موقعی که کاربر login می کنه، اگه چک باکس مرا بخاطر بسپارش checked باشه، در رویداد دکمه ام، با کد زیر یه کوکی اضافه می کنم:


if (chkRemember.Checked)
{
if (Request.Cookies["labP"] == null)
{
HttpCookie Labs = newHttpCookie("labP");
Labs.Values["empus"] = UserName.Text.Trim();
Labs.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(Labs);
}
}


و در رویداد load صفحه login ام، همیشه چک می کنم که اگه کوکی موجوده، به صفحه default fvi:


if(Request.Cookies["labP"] !=null)
{
string ids;
if (Request.Cookies["labP"].Values["empus"] != null)
{
ids = Request.Cookies["labP"].Values["empus"];
DataTable dt = newDataTable();
Employee emp = newEmployee();
emp.Username = ids;

dt = emp.Select_Username(emp.Username);
if (dt.Rows.Count != 0)
{
Session.Add("mys", dt.Rows[0]["EmployeeCode"].ToString());
Session.Add("user", dt.Rows[0]["Username"].ToString());
dt.Dispose();
Response.Redirect("Default.aspx");
}
}

}


برای لینک خروجم هم کد زیر رو قرار دادم، اما با اینکه هم کوکی رو remove می کنم و هم expiretimeاش رو روی now ست می کنم، اما کوکی حذف نمیشه.:گریه:(در حالت اجرا روی local)


protectedvoid lnkbtnLogOut_Click(object sender, EventArgs e)
{
if(Session["user"]!=null)
Session.Remove("user");
if (Session["mys"] != null)
Session.Remove("mys");
if (Request.Cookies["labP"] != null)
Response.Cookies.Remove("labP");
HttpCookie Labs = newHttpCookie("labP");
Labs.Expires = DateTime.Now;
Response.Redirect("Login.aspx");

}

توی سایت هم گشتم، اما موارد موجود کمکم نکرد.:ناراحت:
مشکل از کجاست؟ چرا کوکی حذف نمیشه؟
لطفا کمکم کنید تا این مشکلو حل کنم.

z_bluestar
دوشنبه 16 شهریور 1388, 17:21 عصر
براي Expires كردن Cookie اين طوري كدتو تنظيم كن

cookie.Expires = DateTime.Now.AddDays(-1);

براي User هات از كلاس هاي خود Asp استفاده كني بهتره ها !؟
Asp براي اين كار از تركيبي از cookie و session استفاده مي كنه .
اول :اين خط رو به WebConfig فايل اضافه كن

<authentication mode="Forms">
<forms name=".AuthenticationMyWeb" timeout="30" loginUrl="~/Login.aspx"/>
</authentication>
.AuthenticationMyWeb اسم Session هست كه اطلاعات كاربر آنجا ذخيره مي شه
timeout="30" زماني كه اگه كاربر از Page استفاده نكرد اتوماتيك Sign Out مي شه
loginUrl="~/Login.aspx" اگه كاربر بخواهد به Page كه نياز به حق دسترسي داره بره و Log in نكرده باشه به اين Page هدايت مي شه

دوم:براي Log in اين كد رو استفاده كن.
FormsAuthentication.RedirectFromLoginPage("UsrerName", chkLoginRemember.Checked);

سوم: براي Log Out
FormsAuthentication.SignOut();
Session.Clear();
FormsAuthentication.RedirectToLoginPage();

minamorsali
سه شنبه 17 شهریور 1388, 09:30 صبح
FormsAuthentication.RedirectFromLoginPage("UsrerNa me", chkLoginRemember.Checked);


یعنی وقتی دارم چک می کنم که این کاربر در Data Base ام هست ، بعدش این دستورو بنویسم؟
این دستورات دقیقا چی کار می کنه؟ یعنی کوکی هم می سازه؟ موقع خروج خودش کوکی رو حذف می کنه؟

با تشکر فراوان از راهنمایی هاتون

z_bluestar
سه شنبه 17 شهریور 1388, 11:16 صبح
FormsAuthentication.RedirectFromLoginPage("UserName", chkLoginRemember.Checked);
خوب دوست عزيز :لبخندساده:
شما وقتي اين كد رو قرار مي ديد كه اعتبار User تون رو چك كرده باشيد .
و Page تون هم Valid باشه .
مثلا توي يك If
اين كد خودش اون session كاربر رو مي سازه.

ولي موقع Log Out بايد بگيم كه Session رو پاك كنه
FormsAuthentication.SignOut();
Session.Clear();
FormsAuthentication.RedirectToLoginPage();

اون هم فقط با نوشتن اين خط پاك مي شه .
Session.Clear();

minamorsali
سه شنبه 17 شهریور 1388, 12:58 عصر
با تشکر از راهنماییتون.
ببخشید خودش کوکی رو هم می سازه؟

z_bluestar
سه شنبه 17 شهریور 1388, 13:10 عصر
اينها در واقع Cookie نيستند .
بله خودش مي سازه و در تمام صفحات سايت شما مي تونيد به User Name كه در اين دستور وارد كرده ايد دسترسي داشته باشيد.