2

如何在没有登录控制的情况下使用表单身份验证。我不想在我的站点中使用 asp.net 登录控制。但我必须实现表单身份验证并验证数据库中的用户。

4

2 回答 2

5

我假设您不使用登录控件,而是使用一些文本框(例如用户名/密码)和登录按钮。代码可能如下所示:

在你的 aspx 文件中

<asp:Textbox runat="server" ID="Username"/>
<asp:Textbox runat="server" ID="Password"/>
<asp:Button runat="server" ID="Login" OnClick="Login_OnClick"/>

<asp:Label runat="server" ID="Msg" >

在服务器端:

public void Login_OnClick(object sender, EventArgs args)
{
if (Membership.ValidateUser(Username.Text,Password.Text))
{
     FormsAuthentication.RedirectFromLoginPage(Username.Text,
     NotPublicCheckBox.Checked);
}
else
Msg.Text = "Login failed.";
}

表单身份验证通常由两部分组成:

  • 调用会员 API 来验证/验证用户
  • 使用 FormsAuthentication API 登录用户(创建身份验证 cookie 等)

有关更多信息,请查看这些文章:

于 2012-04-11T06:08:46.337 回答
1

  <forms

  loginUrl ="~/Login.aspx"
  cookieless= "AutoDetect" 
  slidingExpiration="true"
  timeout="10"
   protection ="All"
  />

</authentication>
<authorization>
  <deny users ="?" />
  <allow users="*" />
</authorization>

loginUrl-->在此处使用您的登录页面,默认为 Login.aspx 单击您的登录按钮或登录按钮后,在从数据库验证凭据后使用它

        HttpCookie authCookie = FormsAuthentication.GetAuthCookie(txtUsername.Text, false);
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
        FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent,"");
        authCookie.Value = FormsAuthentication.Encrypt(newTicket);
        Response.Cookies.Add(authCookie);
        string redirUrl = FormsAuthentication.GetRedirectUrl(txtUsername.Text, false);
        Response.Redirect(redirUrl);

在这里您可以找到有关配置 web.config 以满足您的需求的更多信息 表单身份验证

于 2012-04-11T05:56:58.527 回答