欢迎光临!

今日,想学下Login空间的使用,找了代码看了,硬是不知道数据库在那里来的!还有怎么获取数据的!
后来才知道,原来,它是在新用户注册的时候自动创建的数据库!搞笑,!但是,怎么自己连接sql 数据库呢??
看看转载的东西吧!很多东西MSDN上都有!我也复制了一些高级的功能!
作为一个开发者,我们清楚大多数的程序都有一个登陆与处理忘记密码等等功能的模块。

现在,使用 Visual Studio 2005,设计登陆页面变得非常简单因为 VS 2005 开发环境的工具箱有了内建的登陆分组,这个分组有各种跟登陆功能相关的控件。

图1.1:工具箱中的登陆分组



图1.2:登陆分组的所有控件
 
下面我们将看到在 C#.Net 中如何使用 Login 控件。接下来的代码将会解释如果使用数据库来验证用户身份。

第一步:- 在拖拽 Login 控件到页面上这样在设计视图中它会看起来像一个登陆页面。



图1.3:设计视图下的 Login 控件

第二步:一旦 UI 设置好了就该转到代码部分来看如何给控件写代码了。

为这个控件编写响应代码,我们首先要处理 Login1_Authenticate 事件。

双击 Login 控件将会生成如下代码:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
          bool Authenticated = false;
          Authenticated = SiteLevelCustomAuthenticationMethod(Login1.UserName, Login1.Password);
          e.Authenticated = Authenticated;
          if (Authenticated == true)
          {
                    Response.Redirect("Home.aspx");
          }
}
private bool SiteLevelCustomAuthenticationMethod(string UserName, string Password)
{
          bool boolReturnValue = false;
          // Insert code that implements a site-specific custom 
          // authentication method here.
          // This example implementation always returns false.
          string strConnection = "server=dtpxp-skumari;database=master;uid=sa;pwd=;";
          SqlConnection Connection = new SqlConnection(strConnection);
          String strSQL = "Select * From Employee";
          SqlCommand command =new SqlCommand(strSQL, Connection);
          SqlDataReader Dr;
          Connection.Open();
          Dr=command.ExecuteReader();
          while (Dr.Read())
          { 
                    if ((UserName == Dr["name"].ToString()) & (Password == Dr["Password"].ToString()))
                    {
                             boolReturnValue = true;
                    } 
                    Dr.Close();
                    return boolReturnValue;
          }
}

Login 控件有一个名为 FailureText 的属性可以用来设置自己的登陆失败提示信息。



图1.4:自定义错误信息
 
一旦通过了身份验证,程序将根据 DestinationPageUrl 属性转向首页。DestinationPageUrl 是 Login 控件用来设置身份验证成功之后转向的属性。如果验证失败将会给出错误信息提示。下面是一个用户自定义 FailureText 属性来设置出错提示信息截图。

图1.5:登陆出错

关于内建的验证机制:Login 控件有一个内建的验证机制作为属性提供给开发者。当您在设计视图拖拽控件您将会发现 username 与 password 文本框被标记了 * 号 - 意味着这些部分是必须要填写的。 

图1.6 验证机制

Login 控件还有其他更多的特性例如特殊的 .CSS 属性,按钮样式等等。
 
使用例子的步骤:

1.下载 Zip 文件-->解压缩文件
2.开始-->运行 -->inetmgr.exe
3.站点-->默认站点
4.右键点击-->新建虚拟目录-->将会出现向导
5.将解压缩的目录设置为虚拟目录-->完成
6.运行程序/打开解决方案


----------------------------------------------------------------------------------------------------------------------------------------
 Asp.net2.0 Login控件连接sql2000或sql2005数据库   文章指数:0  CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。文章指数:0  CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。
导读:
  
  在asp.net2.0中,提供了各类的provider,有membership,role,profile等的,可以很方便地实现如角色,用户等管理,甚至不用自己写代码了。而在vs.net2005中,默认的各类的provider是使用sql express的,有的时候,如果想使用sql sever 2000或者sql server2005,那应该怎么办呢?下面举例子说明:
  首先,要正确使用 provider,我们要到C:\WINNT\Microsoft.NET\Framework\v2.0.50215下,运行一个
  叫aspnet_regsql的工具,之后按照其步骤设置就可以了,最后会产生一个叫aspnetdb的数据库。
  在web.config中的配置如下:
  
  
  providerName="System.Data.SqlClient" />  providerName="System.Data.SqlClient" />
  
  
  另外:单独sql2000或sql2005 access数据库的连接:
  sqlserver:
  
   providerName="System.Data.SqlClient" />  providerName="System.Data.SqlClient" />
  
  access:
  
  
  
  连接字符:
  private static string CONNECTIONSTR = ConfigurationManager.ConnectionStrings["CustomerDataConnectionString"].ConnectionString; //定义数据库连接字段


----------------------------------------------------------------------------------------------------------------------------------

LOGIN给我们带来了方便,以下为个人的一点整理

 <connectionStrings>
<!--用户登录控件相关   aspnet_regsql 命令即可  -->
    
<remove name="LocalSqlServer" />
    
<add name="LocalSqlServer" connectionString="Data Source=.;Initial Catalog=SimpleOA;Persist Security Info=True;User ID=sa;Password=luxin145" providerName="System.Data.SqlClient" />
  
  
<add name="SimpleOAConnectionString" connectionString="Data Source=.;Initial Catalog=SimpleOA;Integrated Security=True" providerName="System.Data.SqlClient"/>
 
</connectionStrings>





  
  
 
<system.web>
    
<!--更改login控件对密码安全性的要求-->
    
<membership>
      
<providers>
        
<remove name="AspNetSqlMembershipProvider"/>
        
<add name="AspNetSqlMembershipProvider"
        type
=" System.Web.Security.SqlMembershipProvider,  System.Web,  Version=2.0.0.0,  Culture=neutral,  PublicKeyToken=b03f5f7f11d50a3a"
        connectionStringName
="LocalSqlServer"
        enablePasswordRetrieval
="false"
        enablePasswordReset
="true"
        requiresQuestionAndAnswer
="true"
        applicationName
="/"
        requiresUniqueEmail
="false"
        passwordFormat
="Hashed"
        maxInvalidPasswordAttempts
="5"
        minRequiredPasswordLength
="6"
        minRequiredNonalphanumericCharacters
="0"
        passwordAttemptWindow
="10"
        passwordStrengthRegularExpression
="" />
      
</providers>
    
</membership>
    
    
<!--对关键的属性做一下说明:

    connectionStringName 数据库连接。这个要在web.config设置
    enablePasswordRetrieval 获得一个值,指示当前成员资格提供程序是否配置为允许用户检索其密码。
    enablePasswordReset 获得一个值,指示当前成员资格提供程序是否配置为允许用户重置其密码。
    requiresQuestionAndAnswer 获取一个值,该值指示默认成员资格提供程序是否要求用户在进行密码重置和检索时回答密码提示问题。
    applicationName 获取或设置应用程序的名称。
    requiresUniqueEmail 指示用户在创建用户时是否必须提供唯一的电子邮件地址值。
    passwordFormat 指示在成员资格数据存储区中存储密码的格式。下面有详细说明
    maxInvalidPasswordAttempts 获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。
    minRequiredPasswordLength 获取密码所要求的最小长度。
    minRequiredNonalphanumericCharacters 获取有效密码中必须包含的最少特殊字符数。
    passwordAttemptWindow 获取在锁定成员资格用户之前允许的最大无效密码或无效密码提示问题答案尝试次数的分钟数。

    对PasswordFormat 的详细说明
    属性指示存储密码的格式。密码可以采用 Clear、Encrypted 和 Hashed 密码格式存储。Clear 密码以明文形式存储,这可以提高存储和检索密码的性能,但安全性较差,当数据源安全性受到威胁时此类密码很容易被读取。Encrypted 密码在存储时进行了加密,可以在比较或检索密码时进行解密。此类密码在存储和检索时需要进行额外的处理,但比较安全,在数据源的安全性受到威胁时不容易被获取。Hashed 密码在存储到数据库时使用单向哈希算法和随机生成的 salt 值进行哈希处理。在验证某一密码时,将用数据库中的 salt 值对该密码进行哈希计算以进行验证。无法检索哈希密码。
-->


---------------------------------------------------------------------------------------------------------------------------------------
如何:使用 ASP.NET Login 控件的高级功能

Login 控件是一种复合控件,提供了登录窗体的所有常用用户界面 (UI) 元素。该控件被模块化,可分别自定义每个部件。这些部件包括“用户名”和“密码”文本框、“提交”按钮、用于创建新用户的按钮、“记住我”复选框和用户的帮助信息。您可以通过定义新元素和重用默认组件来定义自己的登录控件用户界面。您还可以自定义 Login 控件的用户界面文本和外观(字体和颜色)。或者,可以通过应用 ASP.NET 主题或外观来更改 Login 控件的总体外观。

此外,您还可以利用 Login 控件的更多高级功能,如用户登录时是否将登录信息存储在浏览器的持久性 Cookie 中或者登录控件(在默认登录页以外的页上)是否可见。最后,您可以将登录控件转换为模板以完全控制控件的外观。

控制 Login 控件在用户登录时是否可见

  1. 将一个 Login 控件放在页上。

    Note注意

    默认情况下,该控件配置为使用名为 Login.aspx 的登录页。您可以通过设置 FormsAuthentication 类的 LoginUrl 属性更改 Web.config 文件中登录页的名称。

  2. 如果希望只在用户未登录时显示 Login 控件(该控件将始终显示在由 LoginUrl 属性标识的登录页上),则将 VisibleWhenLoggedIn 属性设置为 false

控制是否将身份验证令牌存储在持久性 Cookie 中

  1. 如果希望控件显示“下次记住我”复选框,则将 DisplayRememberMe 属性设置为 true。如果用户在登录时选中“下次记住我”复选框,身份验证令牌将被存储在浏览器的持久性 Cookie 中。

  2. 如果希望在默认情况下选中“下次记住我”复选框,则将 RememberMeSet 属性设置为 true

  3. 如果希望将身份验证令牌存储在持久性 Cookie 中,而不为用户提供清除“下次记住我”复选框的选择,则将 RememberMeSet 属性设置为 true,并将 DisplayRememberMe 属性设置为 false。对于可以从供多个用户使用的公共计算机访问的站点,则不建议这样做,因为用户的持久性身份验证令牌可能被不必要的用户使用。

将帮助链接添加到 Login 控件

  1. 若要添加一个链接到 Login 控件,以将用户转到他或她能够创建新用户帐户的 URL,则将 CreateUserText 属性设置为文本(如 Click here to register(单击此处注册)),并将 CreateUserUrl 属性设置为帮助页的 URL(如 ~/register.aspx)。

  2. 若要添加一个链接到 Login 控件,以将用户转到可以恢复用户密码的 URL,则将 PasswordRecoveryText 属性设置为文本(如 Forgot your password?(是否忘记了密码?)),并将 PasswordRecoveryUrl 属性设置为帮助页的 URL(如 ~/recoverpassword.aspx)。

  3. 若要添加一个链接到 Login 控件,以将用户转到帮助 URL,则将 HelpPageText 属性设置为文本(如 Need Help?(是否需要帮助?)),并将 HelpPageUrl 属性设置为帮助页的 URL(如 ~/userhelp.aspx)。

将图像添加到 Login 控件

将登录控件转换为模板

您可以将 Login 控件转换为模板,在标记中该模板被定义为包含 ASP.NET 控件(如 LabelTextBox)的表。然后,您可以使用这些元素或添加自己的元素来为 Login 控件创建自定义模板。请注意,组成登录模板的控件与默认模板中的控件使用相同的控件 ID。

对登录控件使用模板

  1. 在设计视图中,将 Login 控件放在页上。

  2. 右击该控件,然后从快捷菜单中选择“转换为模板”。

Login 控件的转换方式取决于 DOCTYPE 声明。如果 DOCTYPE 声明设置为 XHTML 1.0 Transitional (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">),则样式应用于在将 Login 控件转换为模板时创建的表。如果 DOCTYPE 声明没有设置为 XHTML 1.0 Transitional 或不存在,则没有任何样式信息保存在生成的外部表中。

例如,如果您设置了 Login 控件上的相对字号,然后将该控件转换为模板,则相对字号没有保存在表中。下面的示例显示字号设置为 X-Large 的 Login 控件。

<asp:login id="Login2" runat="server" font-size="X-Large" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#333333">
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
<TextBoxStyle Font-Size="0.8em" />
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
</asp:login>

当上面的代码中的 Login 控件转换为模板时,创建的表没有应用任何样式。下面的示例是上述控件在转换为模板时生成的代码段。

<asp:login id="Login2" runat="server" font-size="X-Large" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#333333">
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
<TextBoxStyle Font-Size="0.8em" />
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
<LayoutTemplate>
<table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse">
...

如果您要样式属性也应用于在将 Login 控件转换为模板时创建的表,请确保先将页的 DOCTYPE 设置为 XHTML 1.0 Transitional,然后在设计视图中,从控件菜单中选择“转换为模板”。

posted on 2008-04-14 10:34  花拉子米  阅读(3770)  评论(1编辑  收藏  举报
版权所有