0

以下のクラスに問題があります。

セッションなしで UserID を保持しようとしていますが、もちろんクエリ文字列もあります。UserClass に格納できると思いました。

たとえば、ID を取得しようとすると: Default.aspx:

MyUserClass  userclass=new MyUserClass();//global

//(at button click)
userclass.GetUser(TextBox1.Text, TextBox2.Text);
int UserID=userclass.UserID;

ページ UserID=0 をリロードすると、問題ありません。次に、そのために静的変数を使用しようとしました。例:

static MyUserClass  userclass=new MyUserClass(); //global
//(at button click)
    userclass.GetUser(TextBox1.Text, TextBox2.Text);
    int UserID=userclass.UserID;

私もページをリロードしたときにIDを取得しますが、他の誰かがログインすると、私のIDは他のIDで変更されます

どうすればこの方法でそれを行うことができますか、またはプロパティを意味しますか?

クラスは次のとおりです。

public class MyUserClass
{
    private  int _UserID;
    public  int UserID
    {
        get
        {
            return _UserID;
        }
    }


    public int  GetUser(string UserName, string Pass)
    {
        int UserID=0;
        try
        {

            DB.conn.Close();

            SqlCommand command = new SqlCommand("pUserkontrol", DB.conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.AddWithValue("@puserName", UserName);
            command.Parameters.AddWithValue("@pPass", Pass);
            DataTable dt = new DataTable();
            DB.conn.Open();
            SqlDataReader dr = command.ExecuteReader();

            dt.Load(dr);
            DB.conn.Close();
            if (dt.Rows.Count < 1)
            {

            }

            else
            {
                foreach (DataRow datarow in dt.Rows)
                {
                    _UserID = Convert.ToInt32(datarow["UserID"]);
                    //UserID = _UserID;



                }

            }
        }
        catch (Exception ex)
        {



        }



        return UserID;


    }
}
4

1 に答える 1

0

Web は本質的にステートレスであるため、新しいリクエストはそれぞれ UserId 値を「上書き」しており、リクエストをクラスに結び付けるものは何もありません。ある種のストレージメカニズムを使用する必要があります。セッションとクエリ文字列を使用して割り引いたので、ログイン後の詳細 (userId) を保持するために、独自の軽量 ASP.NET メンバーシップ プロバイダーを展開し、IIdentity と IPrincipal を実装し、プロバイダーを介して認証チケット (Cookie) を作成することをお勧めします。これを行う方法については、Brady Gasters のブログとそこに投稿されたコメントをご覧ください。

http://www.bradygaster.com/custom-authentication-with-mvc-3.0

この投稿では、セッションを使用して MVC 3 のメンバーシップを実装していますが、ページ上のコメントやその他のリンクには、コードを操作して Cookie 認証を使用する方法が示されています。Web フォーム (Web フォームを使用している場合) での実装もかなり簡単です。

于 2012-08-16T11:19:32.273 に答える