Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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# 当TextMode=";时如何验证密码;密码";_C#_Visual Studio 2010_.net 4.0_Asna Visual Rpg - Fatal编程技术网

C# 当TextMode=";时如何验证密码;密码";

C# 当TextMode=";时如何验证密码;密码";,c#,visual-studio-2010,.net-4.0,asna-visual-rpg,C#,Visual Studio 2010,.net 4.0,Asna Visual Rpg,我正在使用VS2010中的默认主模板构建一个web应用程序—这是一个非常新的做法。我也在使用Login.aspx页面,但是没有使用内置的用户验证,我的用户信息在数据库表中。按照我发现的说明,我正在做类似的事情: protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) { Boolean bauthenticated = false; bauthenticated = isV

我正在使用VS2010中的默认主模板构建一个web应用程序—这是一个非常新的做法。我也在使用Login.aspx页面,但是没有使用内置的用户验证,我的用户信息在数据库表中。按照我发现的说明,我正在做类似的事情:

    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
{ 
    Boolean bauthenticated = false; 
    bauthenticated = isValidUser(Login1.UserName, Login1.Password); 
    if (bauthenticated) 
    { 
        e.Authenticated = true; 
    } 
    else 
    { 
        e.Authenticated = false; 
    } 
} 

问题是我把isValidUser方法放在了一个.dll中,这样它就可以在其他地方使用,而它没有收到密码,因为默认的行为是将它清空。我甚至尝试将字符串变量设置为Login1.Password,并传递该变量,但没有成功。我理解为什么会发生这种情况,但找不到任何关于如何正确操作的信息。我是否需要将用户名和密码放入对象并将其传递给我的类构造函数?我真的不想从我创建的每个Login.aspx页面连接到我的数据库,以避免通过http发送密码。

尝试使用以下代码

protected void LoginButton_Click(object sender, EventArgs e)
    {
        try
        {
            dtUserDetails = new DataTable();
            if (UserRepositoryBL.ValidateUser(LoginUser.UserName.Trim(), LoginUser.Password.Trim(), out dtUserDetails))
            {

                AuthUser au = new AuthUser();
                if (dtUserDetails.Rows.Count > 0)
                {
                    DataRow DR = dtUserDetails.Rows[0];
                    au.UserID = Convert.ToInt32(DR["UserID"].ToString());
                    au.UserNo = DR["UserNo"].ToString();
                    au.UserName = DR["UserName"].ToString();
                    au.Password = DR["Password"].ToString();
                }
                string userData = au.ToString();
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(

             1,                             // Version number

             LoginUser.UserName.Trim(),      // Username

             DateTime.Now,                  // Issue date

             DateTime.Now.AddMinutes(60), // Expiration date

             false,                         // Persistent?

             userData                 // User data

         );



                string eticket = FormsAuthentication.Encrypt(ticket);

                HttpCookie cookie = new HttpCookie

                     (FormsAuthentication.FormsCookieName, eticket);

                Response.Cookies.Add(cookie);


                BasePage.ActivityLog("User Login", LoginUser.UserName.Trim(), true, Request.RawUrl);
                string url = FormsAuthentication.GetRedirectUrl(LoginUser.UserName, false);

                Response.Redirect(url);

                //  FormsAuthentication.RedirectFromLoginPage(LoginUser.UserName, false);

            }
            else
            {
                LoginUser.FailureText = "Your login attempt was not successful. Please try again.";
            }

        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
dtUserDetails是一个out参数,其中包含密码、用户名等用户详细信息。。成功登录后,如果登录无效,则datatable返回空。在userData字符串中,所有这些信息都将可用。然后,您可以使用用户身份验证票证从任何页面检索这些信息


检查您的方法是否有效?什么类型的对象是
Login1
?如果我在这里出错,请纠正我,但答案不是简单地不清空密码吗?您可以发布
isValidUser
的代码吗?仅供参考-您的代码可以缩短为一行:
e.Authenticated=isValidUser(Login1.UserName,Login1.Password)
。嗯-我花了两天时间研究这个问题,包括这里。我总是在万不得已的情况下发布问题,因此不确定为什么会将此标记为不显示努力或不有用。@Andre Calil-Login1是和asp:login控件,位于login.aspxThanks上,但如果我在自己的数据库中验证用户名和密码,如何成功登录?我没有使用成员资格模型-请参阅我上面的最后一条评论。此代码也没有使用membership.UserRepositoryBL.ValidateUser(LoginUser.UserName.Trim()、LoginUser.Password.Trim()、out dtUserDetails)方法调用您自己的数据库抱歉,我感到困惑,但您是否建议我将用户名和密码保存在数据表中,并将其传递给我的.dll?