0

ログインしているユーザーのユーザー名を取得するために使用するアプリケーションUser.Identityで、ユーザーがメールのユーザー名などを表示できるユーザーアカウントページが必要なため、これを使用してメールとパスワードの情報を取得できるかどうか疑問に思っていました。パスワード。

データベースの users テーブルからすべての情報を取得するgetusersという Web サービスもありますが、この方法でログインしたユーザーのデータベースからアカウント情報を取得する方法がわかりません。

これまでのところ、私はこれを持っています:

protected void Page_Load(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        username.Text = User.Identity.Name;
    }

    localhost.Service1 myws = new localhost.Service1();
    ds = myws.GetUsers();

}

ユーザー名を取得したのでこれは素晴らしいことですが、残りが必要です。

ああ、これが Web サービス GetUsers です。

[WebMethod]
    public DataSet GetUsers()
    {
        DataSet ds = new DataSet();
        string database = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/dvd_forum.accdb;Persist Security Info=True";
        string queryStr = "select * from Users";
        OleDbConnection myConn = new OleDbConnection(database);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(queryStr, myConn);
        myConn.Open();
        myDataAdapter.Fill(ds, "Users");
        myConn.Close();
        return ds;
    }

ありがとう。

4

2 に答える 2

0

まず、あなたのGetUsers()メソッドは SQL インジェクションに対してオープンであることを警告しなければなりません。それはさておき…

そのGetUsers()メソッドを少し変更してパラメータを受け入れ、検索を一意のユーザーに絞り込むと、次のようになります。

[WebMethod] 
public DataSet GetUser(string UserName) 
{ 
    DataSet ds = new DataSet(); 
    string database = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/dvd_forum.accdb;Persist Security Info=True"; 
    string queryStr = "select * from Users WHERE UserName=" + UserName; 
    OleDbConnection myConn = new OleDbConnection(database); 
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(queryStr, myConn); 
    myConn.Open(); 
    myDataAdapter.Fill(ds, "Users"); 
    myConn.Close(); 
    return ds; 
} 

あとは電話するだけ

GetUser(User.Identity.Name);

ユーザー名がデータベースに保存されていると仮定すると、ユーザーのレコードがデータセットに返されます。

于 2012-05-16T15:07:21.543 に答える
0

asp.net アプリケーションで MembershipUser クラスを使用している場合は、このリンクを確認できます。

コードのスニペットを次に示します。

public void Page_Load(object sender, EventArgs args)
{
  u = Membership.GetUser(User.Identity.Name);

  if (!IsPostBack)
  {
    EmailTextBox.Text = u.Email; 
  }
}
于 2012-05-16T15:07:53.713 に答える