1

ログイン後にユーザーの現在の名前を取得する必要があります。welcome userのように、ページに名前を表示する必要があります。私を助けてください、私の現在のコードは以下のとおりです

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con1"].ConnectionString);
        con.Open();
        SqlCommand cmdr = new SqlCommand("Select name,password From registration", con);
        SqlDataReader dr = cmdr.ExecuteReader();
        while (dr.Read())
        {
            if (txt_name.Text == dr[0].ToString() && txt_pass.Text == dr[1].ToString())
            {
                Response.Redirect("logout.aspx");
            }
            else
            {
                label4.Text ="Invalid Username/Password";
            }
        }

    }
4

8 に答える 8

2

メンバーシップ プロバイダーの Membership.GetUser().UserName。いかなる状況でも、そこにあるコードを実行しないでください。ハックを求めています。パスワードをメモリにロードしないでください。すべてのユーザーをループするため、ユーザーが増えるとパフォーマンスの問題が発生します。

于 2013-01-22T12:20:10.247 に答える
2
protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con1"].ConnectionString);
    con.Open();
    SqlCommand cmdr = new SqlCommand("Select name,password From registration", con);
    SqlDataReader dr = cmdr.ExecuteReader();
    while (dr.Read())
    {
        if (txt_name.Text == dr[0].ToString() && txt_pass.Text == dr[1].ToString())
        {
            Session["UserName"]=dr[0].ToString(); // OR Session["UserName"]=txt_name.Text;
            Response.Redirect("logout.aspx");
        }
        else
        {
            label4.Text ="Invalid Username/Password";
        }
    }

}

HTML でセッション値を取得できます (アプリケーションで使用している場合)。

<div>
Welcome <%=HttpContext.Current.Session["UserName"]%>
</div>
于 2013-01-22T12:25:46.870 に答える
2

ASP.NET メンバーシップを使用している場合:

string userName = Membership.GetUser().UserName

ただし、明らかに使用していません (強くお勧めします)。logout.aspxユーザーがユーザー名とパスワードを正常に提供したときにリダイレクトするのはなぜですか?

それとは別に、提供された情報をクエリでまったく使用していません。

SqlCommand cmdr = new SqlCommand("Select name,password From registration", con);

したがって、パラメータを使用して正しいレコードをフィルタリングする必要があります。

using(var cmdr = new SqlCommand("Select name,password From registration where name=@name and password=@password", con))
{
    cmdr.Parameters.AddWithValue("@name", userName);
    cmdr.Parameters.AddWithValue("@password", password);
    if(cmdr.ExecuteReader().HasRows)
    {
        // user + password correct
    }
    else
    {
        // user or password incorrect
    }
}
于 2013-01-22T12:13:43.890 に答える
1

ユーザー名をセッションに入れる

Session["username"] = dr[0].ToString();

その後、他のページで

if Session["username"] != null
{
  String username = Session["username"].ToString();
}
else
{
  Page.Redirect("login.aspx");
}

それぞれのページを確認できます

于 2013-01-22T12:19:05.027 に答える
1

Userコード ビハインドのプロパティからユーザーの ID を取得できるはずです。

myLabel.Text = User.Identity.Name;

これの完全な名前空間などはHttpContext.Current.User.Identity.Name.

HttpContext.Userプロパティのリファレンス: http://msdn.microsoft.com/en-us/library/system.web.httpcontext.user.aspx

于 2013-01-22T12:17:50.550 に答える
1

ユーザー名をセッションオブジェクトに保存し、セッションが存在する場合はアプリケーションのどこからでもユーザー名を取得できます

ただし、クエリも更新する必要があります。呼び出し方は適切なアプローチではありません

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con1"].ConnectionString);
        con.Open();
        SqlCommand cmdr = new SqlCommand("Select name From registration where name = @username and password = @password", con);
        cmdr.Parameters.Add("@username", txt_name.Text.trim());
        cmdr.Parameters.Add("@password", txt_pass.Text.trim());

        SqlDataReader dr = cmdr.ExecuteReader();

        if(cmdr.ExecuteReader().HasRows)
        {
             Response.Redirect("logout.aspx");
             Session["userName"] = txt_name.Text.trim();
        }
        else{
        //Error page path
        }               
        //DOn't forget to close the connection when you Open it
      con.Close();
    }

いくつかのチュートリアルからさらに学ぶ必要があります。

  1. http://csharp-station.com/Tutorial/AdoDotNet/Lesson01
  2. MSDN
于 2013-01-22T12:25:36.293 に答える
1

理想的には、組み込みの ASP.NET フォーム認証を使用する必要があります。クイック スタートについては、この記事を参照してください。あなたの質問に来て、ログインに成功したら、次のような行を使用する必要があります

FormsAuthentication.RedirectFromLoginPage(txt_name.Text, true);

User.Identity.Nameこれにより、ユーザー名が認証 Cookie に保存され、その後、ページ内のどこでも使用できるコードなどを使用して取得できます。

于 2013-01-22T12:20:33.260 に答える
0

..そして、オブジェクトを使用したいだけのUser場合:

var username = User.Identity.Name;
于 2013-01-22T12:16:50.177 に答える