在我的应用程序中,我使用User.Identity
来获取登录用户的用户名,我想知道我是否可以使用它来获取电子邮件和密码信息,因为我想要一个用户帐户页面,用户可以在那里查看电子邮件用户名等..并更改密码。
我还有一个名为 getusers 的网络服务,它从我的数据库中的users表中获取所有信息,但后来我不确定如何从中获取帐户信息如果我这样做的话,用户登录的数据库。
到目前为止,我有这个:
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;
}
感谢。
答案 0 :(得分: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);
假设用户名存储在数据库中,您将在数据集中返回用户记录。
答案 1 :(得分:0)
如果您在asp.net应用程序中使用MembershipUser类,那么您可以查看link。
这是一段代码。
public void Page_Load(object sender, EventArgs args)
{
u = Membership.GetUser(User.Identity.Name);
if (!IsPostBack)
{
EmailTextBox.Text = u.Email;
}
}