如何在不让用户从登录页面输入电子邮件的情况下通过电子邮件.它将显示在母版页中
本文关键字:电子邮件 情况下 母版页 显示 输入 用户 登录 | 更新日期: 2023-09-27 18:26:26
我想将用户already signed-up
的电子邮件地址解析到我的主页中,而不需要用户从登录页面输入。通过AuthenticateUser
函数,我可以通过"string loginName"将用户名正确解析到我的主页中,因为我是通过用户通过登录模块输入的。只是不知道如何获得电子邮件,因为用户不键入。
protected void btnLogin_Click(object sender, EventArgs e)
{
if (AuthenticateUser(txtUserName.Text, txtPassword.Text))
{
// Create the authentication cookie and redirect the user to welcome page
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, chkBoxRememberMe.Checked);
Response.Redirect("homePage.aspx");
}
else
{
lblMessage.Text = "Invalid UserName and/or password";
}
}
private bool AuthenticateUser(string username, string password)
{
// ConfigurationManager class is in System.Configuration namespace
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
// SqlConnection is in System.Data.SqlClient namespace
using (SqlConnection con = new SqlConnection(CS))
{
string loginEmail = "";
string loginName = "";
SqlCommand cmd = new SqlCommand("spAuthenticateUser", con);
// SqlDataReader reader;
cmd.CommandType = CommandType.StoredProcedure;
// FormsAuthentication is in System.Web.Security
string EncryptedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "SHA1");
// SqlParameter is in System.Data namespace
SqlParameter paramUsername = new SqlParameter("@UserName", username);
SqlParameter paramPassword = new SqlParameter("@Password", EncryptedPassword);
//SqlParameter paramEmail = cmd.Parameters.Add("@Email", SqlDbType.NVarChar);
//SqlParameter paramEmail = new SqlParameter("@Email", SqlDbType.NVarChar);
cmd.Parameters.Add(paramUsername);
cmd.Parameters.Add(paramPassword);
// cmd.Parameters.Add(paramEmail);
loginName = paramUsername.ToString();
// loginEmail = paramEmail.ToString();
con.Open();
// reader = cmd.ExecuteReader();
int ReturnCode = (int)cmd.ExecuteScalar();
Session["Status"] = "Login";
Session["LoginName"] = username;
Session["LoginEmail"] = loginEmail;
return ReturnCode == 1;
}
}
数据库:
CREATE TABLE [dbo].[tblUsers] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (100) NULL,
[Password] NVARCHAR (400) NULL,
[Email] NVARCHAR (200) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
stored procedure : spAuthenticateUser
CREATE Procedure spAuthenticateUser
@UserName nvarchar(100),
@Password nvarchar(400)
as
Begin
Declare @Count int
Select @Count = COUNT(UserName) from tblUsers
where [UserName] = @UserName and [Password] = @Password
if(@Count = 1)
Begin
Select 1 as ReturnCode
End
Else
Begin
Select -1 as ReturnCode
End
End*
当有人登录您的网站时,您可以在会话中写入他的ID。
所以在你的登录中,你有类似的东西
Select * from [user] where password=@password and email=@email
在这里,您将获取User.ID并将其写入会话,这样您就可以知道您的网站中有哪个用户。
Session["__UserID"] = row["ID"]// row from previous query.
现在,当您需要登录用户的一些数据时,只需从会话中获取他的ID并进行查询即可获取数据。
p.S如果您需要在登录时在会话中存储更多数据,最好创建类并在会话中写入。在这个类中,您将拥有UserID、UserName或任何您想要的属性。