项目8 登录注册与身份验证
2020-02-27 211浏览
- 1.项项目目 88 登登录录注注册册与与身身份份验验证证 《 ASP.NET 动态网页设计项目教程》 主编:郭建东
- 2.• 知识教学目标 编程实现登录功能 编程实现注册功能 验证控件应用 使用控件实现登录注册 用户身份验证模块 • 技能培养目标 掌握编程实现登录、注册功能的实现 掌握验证控件、登录注册控件的应用
- 3.任务 1: 使用 ADO.NET 编 程实现登录注册功能 • 任务描述: • 创建网页并在页面上添加登录、注册 链接,成功跳转至登录、注册页面后, 实现登录注册功能。
- 4.1.1 关键知识 : 验证控件 • 1 、 RequiredFieldValidator 控件 • RequiredFieldValidator 控件可要求用户必须输入数 据,常用于对必填数据的验证,如可用来验证用户注 册页面的用户名信息。 RequiredFieldValidator 控件 将用户数据(在要验证的控件中输入的)与 InitialValue 属性值进行比较,如果用户数据与 InitialValue 值不相同,则验证成功;否则,验证失败。 InitialValue 属性的默认值是空,即只要用户输入数据 (在要验证的控件中输入),就可以通过验证。
- 5.• 2 、 CompareValidator 控件 • CompareValidator 控件将用户输入的数据与指定的 数据或某一控件的值进行比较,验证用户输入的数据 是否小于、大于、等于、不等于、大于等于、小于等 于另外一个值,或验证用户输入的数据是否可以转换 为某种数据类型。
- 6.• 3 、 RangeValidator 控件 • RangeValidator 控件验证用户输入的数据是否符合某个范 围要求,如可验证工资是否在 2000~3000 之间,设置控 件的 Type 属性值可验证不同的数据类型,包括整数类型、 字符串类型、浮点类型、日期类型、货币类型数据等。 • RangeValidator 控件的主要属性有 MinimumValue 和 MaximumValue ,分别用来指定验证范围的最小值和最 大值,如果用户输入的数据在该范围之内,则验证通过, 否则,验证失败。
- 7.• 4 、 RegularExpressionValidator 控件 • RegularExpressionValidator 控件使用正则表达式来 检查用户输入的数据,可以用来验证具有特定格式的数 据,如电子邮件地址、电话号码、邮政编 码、 Internet URL 等。 • RegularExpressionValidator 控件的主要属性是 ValidationExpression ,用来确定有效性的正则表达 式。正则表达式中常用的符号如表 8-1 所示。
- 8.• 5 、 CustomValidator 控件 • CustomValidator 用户自定义控件可根据用户自己定 义的规则进行验证。
- 9.• 6 、 ValidationSummary 控件 • ValidationSummary 汇总控件集中显示页面中的验证错 误信息。 ValidationSummary 控件不对用户输入的数据 进行验证,用于统一现实页面中所有验证控件的错误信息。 ValidationSummary 控件的主要属性如表 : 所示。
- 10.• 7 、取消验证 • 在现实应用中,有时需要不调用页面的验证功能,例 如在用户注册页面,单击“取消”按钮,取消用户注册。 此时,只需将“取消”按钮的 CausesValidation 属性 设为 False ,则单击按钮时,不会调用验证程序。
- 11.1.2 任务实施 :ADO.NET 编程 实现登录注册功能 • 1.2.1 登录注册链接设计
- 12.• 2 、在新闻主页面添加登录及注册链接
- 13.• 3 、在管理员主页面和新闻主页面添加 登录后欢迎信息
- 14.• 4. 数据库设计 在 news 数据库中建立管理员表 admin 和用户表 users
- 15.• 5.ADO.NET 编程实现注册功能 • 编程实现用户注册功能 , 效果图如下,步骤见教材任务。
- 16.• 6. 数据验证
- 17.• 6. 登录数据验证
- 18.任务 2: ASP.NET 登录工 具箱控件的应用 • 任务描述: • 使用注册控件完成用户注册功能,应用登录工具箱 控件完成注册用户的登录。注册用户登录后跳转到主 页面,在主页面显示用户登录状态及信息,并允许用 户点击退出按钮退出登录状态。在用户已登录的情况 下,使用 ChangePassword 控件为用户和系统管理 员提供密码修改功能。
- 19.2.1 关键知识: ASP.NET 的登 录工具箱控件
- 20.• Login 控件 属性 CreateUserText CreateUserUrl DestinationPageUrl DisplayRememberMe FailureAction FailureText HelpPageText HelpPageUrl Orientation Password PasswordLabelText PasswordRecoveryText PasswordRecoveryUrl UserName UserNameLabelText 说明 指定新用户的提示文本 指定新用户注册页的链接文本 指定用户在登录后跳转的页面 指定是否显示“下次记住我”复选框 指定当登录失败时发生的操作 指定当登录尝试失败时显示的文本 指定登录帮助页链接的文本 指定登录帮助页的 URL 指 定 页 面 上 控 件 元 素 的 排 列 方 向 : Vertical 或 Horizental 获取用户输入的密码 指定 Password 文本框的标签文本 指定密码恢复页链接的文本 指定密码恢复页的 URL 获取用户输入的用户名 指定 UserName 文本框的标签文本
- 21.• Loginview 控件 • 使用 LoginView 控件,可以向匿名用户和登录用户显示不同的信息。该控件显示以下模板之一: AnonymousTemplate 或 LoggedInTemplate 。在 AnonymousTemplate 模板中,可以为匿名用户添加显示适当信息的标记和控件;而在 LoggedInTemplate 模板中,则可以为经过身份验证的用户添加显示适当信息的标记和控件。
- 22.• LoginStatus 控件 • LoginStatus 控件有“已登录”和“注销”两种状态,具体为哪种状态是 由 Page 对象的 Request 属性的 IsAuthenticated 属性决定的。 • LoginStatus 控件可能显示文本,也可能显示图像链接。通过设置 LoginText 、 LoginImageUrl 、 LogoutText 和 LoginImageUrl 属 性对 LogiStatus 控件的外观进行定义。 • 注销行为由 LogoutAction 属性控制,该属性有三个值:分别为 Refresh 、 Redirect 和 RedirectToLoginPage ,分别表示刷新当 前页,将用户重定向到应用程序配置设置中定义的登录页,还是将用 户重定向到 LogoutPageUrl 属性所指定的页 .
- 23.2.2 任务实施:使用控件实现登录 注册和密码修改功能 • 1 、新建注册页面
- 24.• 使用 Login 控件实现登录功能
- 25.• 显示登录状态及登录用户名
- 26.• 修改密码 图 828 登录后网页页眉信息
- 27.任务 3 HttpModule 实现用户 身份验证 • 任务描述 • 用户进入页面时判断页面是否在管理员文件夹下,是 否需要身份验证。可通过 httpmodule 里对访问 Admin 文件的用户进行过滤,在 http 进行页面访问 时候用 httpApplication 类的 AcquireRequestState 事件对 session 进行验证, 如果 session 存在则通过,如果不存在侧直接跳转到 登录页面。
- 28.3.1 关键知识: HttpModule 和 Session • httpModule HttpModule 是 ASP.NET 的一种 HTTP 处理机制,当把 HttpModule 注册到网站或 Web 应用后,每接到一个新的 HTTP 请求时,都会执行 HttpModule 中的相应代码 .IHttpModule 向实 现类提供模块初始化和处置事件, IHttpModule 包含兩個方法: public void Init(HttpApplication context); public void Dispose(); Init() 这个方法接受一个 HttpApplication 对象, HttpApplication 代表了 当前的应用程序,我们需要在这个方法内注册 HttpApplication 对象暴露给客 户端的事件,对事件进行注册,实际的事件处理程序需要另外写方法。 Dispose() 方法可以在进行垃圾回收之前进行一些清理工作。
- 29.• Session 会话期状态 • ASP.NET 会话状态将一个有限时间窗口内来自同一 浏览器的请求标识为一个会话,并在该会话持续期间 保留变量的值。
- 30.1 、定义会话期变量 • 使用 Session 属性(将会话变量的值存储为按名称 索引的集合)可方便地设置和检索 ASP.NET 会话状 态变量。要使用 Session 保存数据,只要指定它的 键 / 值对就可以了,格式如下: • Session[ 键名 ]= 键值 ; • 其中,键名为合法的标识符;键值为该键名所对应 的数据。如下面的代码示例创建会话变量 UserName 来表示登录用户名,然后将它们设置为 从文本框控件 txtusername 中读取值。 • • Session["UserName"] = txtusername.Text;
- 31.• 2 、使用会话期变量 • 会话期变量定义并赋值后,可在应用程序中直接使用,以上面的 UserName 会话期为例,使用时直接引用 Session["UserName"] 即可,如在登录页面可判断用户是否有 登录: • if(Session["UserName"]== null) { …… } •或 • if (HttpContext.Current.Session["UserName "] == null) • 如果条件判断值为 true ,则说明会话期为空。
- 32.• 3 、常用属性
- 33.3.2 任务实施 : 使用 httpmodule 模块实现对用户身 份验证 • 1 、创建一个类文件,命名为 CheckAdminModule.cs ,保存在 App_Code 文件 夹中。 • 2 、编写类文件代码 • 3 、配置 web.config 文件 • 4 、在管理员文件夹中添加一个窗体文件,命名为 adminpage.aspx ,在页面中添加内容,运行该页 面,可看到页面会直接跳转到 login_admin.aspx 管 理员登录页面。