私は、c# と MSSQL DB を使用して ASP.NET でアプリケーションに取り組んでいます。セッション変数に適切な値が含まれている場合はページが開き、それ以外の場合はログイン ページにリダイレクトされるという単純なロジックを使用しています。これは機能するコードです。
protected void Page_Load(object sender, EventArgs e)
{
if(Session["loggedinloginid"]==null || Session["loggedinpassword"]==null)
Response.Redirect("login.aspx");
con.ConnectionString = ConfigurationManager.ConnectionStrings["familyConnectionString"].ConnectionString;
con.Open();
adp = new SqlDataAdapter("select * from admins where loginid=N'" + Session["loggedinloginid"].ToString() + "' AND password=N'" + Session["loggedinpassword"].ToString() + "'", con);
dt = new DataTable();
adp.Fill(dt);
if (dt.Rows.Count == 0)
Response.Redirect("login.aspx");
LinkButton lb=(LinkButton)(Master.FindControl("LinkButton1"));
lb.Text = "Welcome " + Session["loggedinloginid"].ToString()+"| Log Out |";
lb.Click += new EventHandler(lb_Click);
}
void lb_Click(object sender, EventArgs e)
{
Session.Clear();
Response.RedirectPermanent("WebForm2.aspx");
//throw new NotImplementedException();
}
問題は、ログアウトしてセッションをクリアし、保護したいページ (このコードを含むページ) の URL をブラウザーに入力すると、それが開くことです! なぜ、どうすればこれを回避できますか?