قمت بعمل صفحة دخول تتكون من
مربع نص لإدخال اسم المستخدم
مربع نص لإدخال كلمة المرور
خيار (CheckBox) تذكرني
وزر
وقمت بعمل الكود للتحقق كالتالي :
1- إذا لم يختار المستخدم خيار تذكرني فإنه بعد التحقق من اسم المستخدم وكلمة المرور يتم إنشاء Session
2- إذا اختار المستخدم تذكرني فإنه بعد التحقق من اسم المستخدم وكلمة المرور يتم إنشاء Cookies
بالنسبة Session فإنه يعمل بشكل ممتاز حيث بعد إغلاق المتصفح ومحاولة الدخول مرة أخرى فإنه يتم إعادة المستخدم لصفحة الدخول ومن ثم إدخال اسم المستخدم وكلمة المرور مرة أخرى .
أما في حالة Cookies فإنه بعد إغلاق المتصفح نهائيا ، ومحاولة الدخول مرة أخرى فإنه يتم الدخول تلقائي دون مشاكل ودون الحاجة لإعادة تسجيل الدخول مرة أخرى ، ولكن بعد إغلاق المتصفح والانتظار لبضع دقائق ومحاولة الدخول تلقائيا لا أتمكن من ذلك حيث يتم إعادتي إلى صفحة الدخول ومن ثم إدخال اسم المستخدم وكلمة المرور ، وبهذا لم يعد هناك فائدة لل Cookies
وما أرغبه في أن أتمكن من الدخول تلقائيا في حالة الكوكيز ولو لبضعة أيام ، وليس لدقائق معدودة.
هذا الكود
protected void LoginButton1_Click(object sender, EventArgs e)
{
string Password3 = FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Text, "md5");
// هذا الشرط هل يوجد مستخدم وكلمة مرور صحيحة
if (DA.CheckUser(UserName.Text, Password).Rows.Count > 0)
{
if (remeberme.Checked)
{
FormsAuthentication.RedirectFromLoginPage(UserName.Text, true);
HttpCookie userlogin = new HttpCookie("userlogin");
userlogin.Value = UserName.Text;
userlogin.Expires = DateTime.Now.AddDays(15);
Response.Cookies.Add(userlogin);
Response.Redirect("userpage.aspx");
}
else
{
FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
Session["USERLOGIN"] = "userok";
Session["USERNAME"] = UserName.Text;
Response.Redirect("userpage.aspx");
}
}
}
وهذ الموجود في web.config
<authentication mode="Forms">
<forms defaultUrl="../user/" loginUrl="userlogin.aspx"/>
</authentication>