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;
}
}