我正在使用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发送密码。
答案 0 :(得分:0)
尝试使用以下代码。
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参数,其中包含用户详细信息,如密码,用户名等。成功登录后,如果userData字符串中的login.with无效,则返回空。所有这些信息都可用。然后你可以从任何地方检索这些信息。使用用户身份验证票证的页面