Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于我使用asp.net和C创建的登录页面#_C#_Asp.net_Authentication_Webforms_Ado.net - Fatal编程技术网

C# 关于我使用asp.net和C创建的登录页面#

C# 关于我使用asp.net和C创建的登录页面#,c#,asp.net,authentication,webforms,ado.net,C#,Asp.net,Authentication,Webforms,Ado.net,我为我的班级项目创建了一个网站,但我很难创建登录名。我使用参数将数据插入数据库。我正在用c#和我的sql server数据库做这件事 首先,我创建登录过程: ALTER PROC [dbo].[uselogin] @userNickName nvarchar(50), @userPassword nchar(10) As SELECT [userId] ,[userFirstName] ,[userLastName] ,[use

我为我的班级项目创建了一个网站,但我很难创建登录名。我使用参数将数据插入数据库。我正在用c#和我的sql server数据库做这件事

首先,我创建登录过程:

 ALTER PROC [dbo].[uselogin]
    @userNickName nvarchar(50),
    @userPassword nchar(10)
  As 
    SELECT [userId]
      ,[userFirstName]
      ,[userLastName]
      ,[userNickName]
      ,[userPassword]
      ,[userStreetAddress]
      ,[userEmail]
  FROM [dbo].[User_T]
  WHERE userNickName=@userNickName AND userPassword=@userPassword
然后在登录页面中创建登录文本框和登录按钮,如下所示:


如果不为您做家庭作业,我确实有以下见解:

  • 您应该始终使用“所有者”作为存储过程名称的一部分
  • 您应该始终在实现
    IDisposable
    的任何对象上使用
    using
    块(请参见下面显示的示例)。这有助于轻松、正确地处理它们
  • 我没有在构造函数中实例化连接,而是选择了使用方法的模式。该方法将实例化并打开
    SqlConnection
    对象,并处理所有错误
  • 我将参数创建更改为使用更简单的方法
  • 我拿出了
    rd.Read()
    行,因为它似乎没有什么作用 例如:

        public DBManager
        {
            public void userLogin(User user)
            {
                using (SqlConnection _conn = GetConnection())
                {
                    using (SqlCommand cmd = new SqlCommand("dbo.uselogin",_conn))
                    {
                       cmd.CommandType = CommandType.StoredProcedure;
                       cmd.Parameters.AddWithValue("@userNickName", user.UserNickName);
                       cmd.Parameters.AddWithValue("@userPassword", user.UserPassword);
                       using (SqlDataReader rd = cmd.ExecuteReader())
                       {
                           if (rd.HasRows)
                           {
                               HttpContext.Current.Response.Redirect("PublishingAnEvent.aspx", true);
                           }
                           else
                           {
                               //. Label5.Text = "do it again";
                               HttpContext.Current.Response.Redirect("RegistrationPage.aspx", true);
                           }
                       }
                   }
                }
            }
        }
    

    您要坚持登录结果的哪一点?我看不到表单验证cookie正在生成,也看不到在任何方面分配了任何值…我如何生成表单验证cookie(注意:没有登录级别,只是登录的一个示例)@brettcaswellnoth.star,(顺便说一句,很好的名称)。。FormAuthentication在ASP.NET中加载了一个默认模块,并指定ASP.NET在IIS中处理身份验证。我见过的大多数实现都在Global.asax中覆盖了OnAuthenticate。。然后,他们创建一个cookie,并使用FormsAuthentication类对其进行加密。。在每个
    页面
    请求上,都有一个过程,该过程会在将用户分配给
    请求时解密cookie。用户
    。从sauthentication.SetAuthCookie查看
    ,页面实现中有..实际上,只需查看
    FormAuthentication
    类请注意,使用ADO.NET的方法是确定用户/通行证凭据是否有效(正确),然后使用
    FormAuthentication
    将其持久化。。在页面示例中,它使用
    成员资格提供程序
    (另一个模块),您可能希望也可能不希望继承和覆盖该模块来执行验证。。。