如何在不让用户从登录页面输入电子邮件的情况下通过电子邮件.它将显示在母版页中

本文关键字:电子邮件 情况下 母版页 显示 输入 用户 登录 | 更新日期: 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或任何您想要的属性。

相关文章: