User.Identity для страницы учетной записи пользователя

В моем приложении я использую User.Identity чтобы получить имя пользователя, вошедшего в систему, мне было интересно, могу ли я использовать его для получения информации об электронной почте и пароле, так как мне нужна страница учетной записи пользователя, где пользователь может просматривать там имя пользователя электронной почты и т. д. и менять свой пароль.

У меня также есть веб-служба getusers, которая получает всю информацию из таблицы пользователей в моей базе данных, но я не уверен, как получить информацию об учетной записи из базы данных для пользователя, вошедшего в систему, если я сделаю это таким образом.

Пока у меня есть это:

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();

}

Что здорово, потому что я получаю имя пользователя, но мне нужно остальное.

Да, и вот веб-сервис 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;
    }

Благодарю.

2 ответа

Во-первых, я должен предупредить вас, что ваш 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);

предполагая, что имя пользователя хранится в базе данных, вы получите запись своего пользователя, возвращенную в наборе данных.

Если вы используете класс MembershipUser в своем приложении asp.net, вы можете проверить эту ссылку.

Вот фрагмент кода.

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

  if (!IsPostBack)
  {
    EmailTextBox.Text = u.Email; 
  }
}
Другие вопросы по тегам