• 0

كيف أمنع المستخدم من الدخول إلى صفحة تسجيل الدخول باستخدام ASP.NET؟

السلام عليكم،
كيف أمنع المستخدم من الدخول لصفحة تسجيل الدخول بعد الدخول؟

لدي صفحتين الأولى login.aspx
 

        Username: <asp:TextBox  ID="txtUser" runat="server" Placeholder="Please Enter Your name" />
        Password: <asp:TextBox ID="txtPwd" runat="server" Placeholder="Please Enter Your Password" TextMode="Password" />
        <br /> <br />
        <asp:Button Text="LOGIN" runat="server" ID="Login" OnClick="Login_Click" />

وهذا كود الــLogin:

if(txtUser.Text == string.Empty || txtPwd.Text == string.Empty)
            {
                Response.Write("You Have To Fill Out All Inputs");
            }
            else
            { 
                SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myWebSite"].ConnectionString);
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT Username, Password FROM login WHERE Username = '" + txtUser.Text + "'", conn);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    if (txtPwd.Text == dr["Password"].ToString())
                        Session["username"] = txtUser.Text;
                        Response.Redirect("welcome.aspx");
                }
                Response.Write("SORRY!!, Username or Password is Wrong!");


وعند الضغط على Login يذهب للصفحة الثانية welcome.aspx التي كود السي شارب فيها :
 

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["username"] == null)
                Response.Redirect("login.aspx");
            else
                username.Text = Session["username"].ToString();
        }

        protected void Logout_Click(object sender, EventArgs e)
        {
            Session.RemoveAll();
            Response.Redirect("login.aspx");
        }

طبعاً لدي في صفحة welcome.aspx زر Logout لعمل تدمير ومسح للـSession
-------------------------------------------------------------------------------
الآن مشكلتي عندما أعمل Login عن طريق الـlogin.aspx أدخل لصفحة الـwelcome.aspx ، كل شيء يعمل بشكل جميل :D ولكن المشكلة عندما يضغط المستخدم على زر Back في المتصفح يستطيع الرجوع لصفحة الــlogin بكل سهولة! ولن يمنعه شيء!، أنا أريد عندما يتم تسجيل الدخول وتسجيل السيشن "Session" لا يستطيع المستخدم رؤية أو دخول صفحة login.aspx أبداً إلاّ أن يعمل logout أو تدمير للسيشن "Session" بشكل كامل.
أتمنى أن السؤال واضح، أتمنى الشرح، وشكراً لكم :)

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 2

هناك حل بسيط. أضف الكود التالي إلى حدث Page_Load الخاص بصفحة تسجيل الدخول Login على الشكل التالي:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["username"] != null)
        Response.Redirect("welcome.aspx");
}

 

ستعمل الشيفرة السابقة ضمن الحدث Load للصفحة Login على التأكّد من وجود جلسة صالحة للعمل قبل تحميل صفحة تسجيل الدخول. فإن كانت هذه الجلسة موجودة (أي صالحة) سيتم تحويل المتصفّح فورًا إلى صفحة الترحيب welcome ولا تظهر صفحة تسجيل الدخول، وإلّا فسيكون المستخدم غير مسجّل للدخول، لذلك ستظهر له صفحة تسجيل الدخول كالمعتاد.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

شكراً لك كثيراً أخي @سعيدتم حل المشكلة ولله الحمد :)

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن