首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

本章内容

q Login控件概览

q 使用Login控件

q 使用CreateUserWizard控件

q 使用LoginStatus控件

q 使用LoginName控件

q 使用ChangePassword控件

q 使用PasswordRecovery控件

q 使用LoginView控件

q 小结

使用ASP.NET Login控件可以轻易创建网站的用户注册系统,Login控件能用于显示用户注册表单、用户登陆表单、修改密码表单和密码提示表单。

默认情况下,Login控件使用ASP.NET提供的Membership来认证用户、创建新用户以及修改用户属性。在使用Login控件时,完成这些任务不需要编写任何代码。

注解   本书下一章将对ASP.NET Membership进行详细讨论。

本章第一部分将对Login控件作概览性的介绍,学习如何使用密码认证来保护网站的内容,以及如何让用户注册和登陆网站。

本章其余部分将详细介绍如何使用Login控件提供的下列属性:

q Login——用于显示用户登录表单;

q CreateUserWizard——用于显示用户注册表单;

q LoginStatus——用于显示登录或登出链接,该链接类型依赖于当前用户的认证状态;

q LoginName——用于显示当前注册用户的用户名;

q ChangePassword——用于显示修改用户密码的表单;

q PasswordRecovery——用于显示找回用户密码的表单;

q LoginView——用于根据用户认证状态或角色为不同的用户显示自定义内容。

1.1  Login控件概览

除非有机密信息需要保护,否则使用Login控件并不是一件轻松有趣的事。因此,让我们从创建一个需要使用密码进行保护的页面来开始本章的学习。

在应用程序中创建一个名为SecretFiles的文件夹,并将代码清单1-1中的页面放入该文件夹中。

代码清单1-1  SecretFiles\Secret.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>Secret</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <h1>This Page is Secret!</h1>

   

    </div>

    </form>

</body>

</html>

代码清单1-1中的页面没有什么特殊之处,它只是会显示信息This Page is Secret!(这个页面是保密的)。

如果希望通过密码认证来保护页面Secret.aspx,那么就需要对应用程序做两个配置更改:配置认证和授权设置。

首先,要为应用程序开启适当的认证类型。系统在默认情况下会启用Windows认证。但是只有在应用程序根目录下加入代码清单1-2中的Web配置文件,以启用Forms认证后,才能使用Login控件。

代码清单1-2  Web.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <system.web>

    <authentication mode="Forms" />

  </system.web>

</configuration>

代码清单1-2中的Web配置文件包含了一个认证节点,该节点有一个mode属性,并且该mode属性的值为Forms。

注解   认证和授权的内容将在本书第2章详细讨论。

在默认情况下,任何用户都可以访问应用程序中的所有页面。如果要在某个文件夹中对访问进行限制,那么就必须配置该文件夹的认证设置。

如果将代码清单1-3中的Web配置文件加入到SecretFiles文件夹中,那么匿名用户就不能再访问该文件夹中的任何页面。

代码清单1-3  SecretFiles\Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web>

    <authorization>

      <deny users="?"/>

    </authorization>

  </system.web>

</configuration>

代码清单1-3中的Web配置文件包含了一个授权节点。该节点中包含了一个控制该目录授权角色的列表。代码清单1-3中的单一授权角色将阻止匿名用户访问该文件夹(其属性值?表示匿名用户)。

Developer

注解

 
Visual Web  如果你愿意,还可以使用Web站点管理工具来配置认证和授权设置。该工具提供一个表单界面来执行对应用程序配置的修改。使用Visual Web Developer时,可以通过选取菜单选项:Website(网站)→ASP.NET Configuration(ASP.NET配置)来打开Web 站点管理工具。

当代码清单1-3中的Web配置文件添加到SecretFiles目录中后,如果这时去尝试访问页面Secret.aspx,那么用户请求将会自动地重定向到一个名为Login.aspx的页面上。因此,接下来需要创建的页面就是Login.aspx(在默认情况下,必须将该页面放置在应用程序的根目录中)。

代码清单1-4的Login.aspx页面中包含了一个Login控件,该控件将自动生成一个用户登录表单(见图1-1)。

图1-1  显示登录表单

代码清单1-4  Login.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>Login</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <asp:Login

        id="Login1"

        CreateUserText="Register"

        CreateUserUrl="~/Register.aspx"

        Runat="server" />

   

    </div>

    </form>

</body>

</html>

需要注意的是,Login控件包含了一个CreateUserText和一个CreateUserUrl属性。添加这些属性后,Login控件就会显示一个为该应用程序注册新用户的链接。代码清单1-4中Login控件的新建用户链接指向了一个名为Register.aspx的页面,而该页面的定义包含在代码清单1-5中。

代码清单1-5  Register.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>Register</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

    <asp:CreateUserWizard

        id="CreateUserWizard1"

        ContinueDestinationPageUrl="~/SecretFiles/Secret.aspx"

        Runat="server" />

   

    </div>

    </form>

</body>

</html>

该页面中包含了一个CreateUserWizard控件,该控件会自动创建用户注册表单(见图1-2)。当用户提交了该表单后,应用程序将创建一个新用户,并将用户请求重定向回页面Secret.aspx。

图1-2  显示用户注册表单

注意   默认的ASP.NET Membership接口提供器需要创建一个至少7位的密码,并且密码中还必须要有非数字和文字的字符。因此,secrte_是一个有效的密码,但是secret9却不是。在下一章中,我们将详细介绍如何修改这个默认的密码复杂度要求。

到此为止,需要注意的是,在没有编写一行代码的情况下,我们就已经完成了一个简单的用户注册系统。至于那些存储用户名和密码的所有杂乱细节,都在后台通过ASP.NET Framework自动进行处理。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论