0

私は Web サイトの開発に関するプロジェクトを行っています。ASP.net は初めてで、ユーザーがログオンしたときに、同時に Web を閲覧しているすべての人が同時にログに記録されるというログイン セッションに関する問題があります。ユーザーがログインしているかどうかに関係なく。セッションは、誰かがログアウト ボタンをクリックし、全員がログアウトされたときにのみ終了します。私を助けてください。あらゆる助けをいただければ幸いです。これが私のコードです。マスターページでこれらをコーディングします。

 protected void Page_Load(object sender, EventArgs e)

    {

        string equip = "Equipment.aspx";
        string url = HttpContext.Current.Request.Url.AbsoluteUri;
        if (url.IndexOf(equip) != -1) { Calendar2.Visible = false; Image1.Visible = false; }
        equip = "Bookings.aspx";
        if (url.IndexOf(equip) != -1) { Calendar2.Visible = false; Image1.Visible = false; }
        equip = "Rooms.aspx";
        if (url.IndexOf(equip) != -1) { Calendar2.Visible = false; Image1.Visible = false; }
        equip = "Users.aspx";
        if (url.IndexOf(equip) != -1) { Calendar2.Visible = false; Image1.Visible = false; }

        if (!Page.IsPostBack)
        {
            if (user != "" && user != null)
            {
                loginStatus = true;
                redirectpage = false;

            }
            else
            {

                redirectpage = false;
                loginStatus = false;
                user = "";
                authority = 0;
            }

        }
        else
        {

            if (user == "" || user==null)
            {

                if (cal != null)
                {

                }
                loginStatus = false;
                authority = 0;
            }
            else
            {
                if (cal != null)
                {

                }
                loginStatus = true;
            }
        }
    }

 /// <summary>
 /// Responds to a login request, validating details against the database and
 /// loading the user into the session if successful.
 /// </summary>
 /// <param name="sender">The sending object.</param>
 /// <param name="e">The event arguments.</param>

 protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
 {

 SqlConnection oConn =
 new SqlConnection();
 oConn.ConnectionString = @"Data Source=STAVROS\SQLEXPRESS;User ID=sa;Password=123abc;Initial Catalog=webdev";

 sSQL = "select * from tbl_user where username = '" + Login.UserName + "'AND password = '" + Login.Password + "' ";
 SqlCommand oComm1 = new SqlCommand(sSQL, oConn);

 try
 {

 oConn.Open();
 SqlDataReader i = oComm1.ExecuteReader();
 if (i.HasRows)
 {
 while (i.Read())
 {
 user = i.GetString(0);
 authority = i.GetInt16(7);

 loginStatus = true;
 string url = HttpContext.Current.Request.Url.Absolute…
 string p = "Home.aspx";
 if (url.IndexOf(p) != -1) { Response.Redirect("Home.aspx"); }
 Helper.CreateUserSession(Session, user);
 }

 }
 else
 {
 loginStatus = false;
 Login.FailureText = "Invalid username or password.";
 }


 i.Close();
 }
 catch (Exception ex)
 {
 Response.Redirect("room-book.aspx");

 }

 }

 /// <summary>
 /// Logs the user out (kills the session)
 /// </summary>
 /// <param name="sender">The sender</param>
 /// <param name="e">The event arguments</param>

 protected void btnLogout_Click(object sender, EventArgs e)
 {

 loginStatus = false;
 user = "";
 authority = 0;
 Response.Redirect("Home.aspx");
 }
4

3 に答える 3

1

どうやら、Web アプリケーションでのセッション処理に関する知識がないようです。

これは、C#/ASP.NET でのフォーム ベース認証に関する包括的なチュートリアルです。先に進む前に、基本概念を読む必要があります。

それが役に立てば幸い。

于 2012-07-28T04:02:14.423 に答える
0

loginStatus はフィールドだと思いますか? その場合、このフラグをセッションごとに保存する必要があります

于 2012-07-28T03:54:17.980 に答える
-2

セッションを介してアプリケーション内でフォーム認証チケットを使用することをお勧めします。それに加えて、Windows認証からパスポートモード認証までのWeb構成を構成します。さらに、javascriptタグを使用して、ログアウト時のフォームロードイベント内のセッションを期限切れにします。

于 2012-07-28T04:41:53.803 に答える