欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    ASPNET开发大全第23章登录模块设计.docx

    • 资源ID:3152965       资源大小:45.86KB        全文页数:21页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ASPNET开发大全第23章登录模块设计.docx

    ASPNET开发大全第23章登录模块设计第23章 登录模块设计 登录模块能够配合注册模块让网站应用能够同用户进行信息交互,当用户在网站进行注册后,就需要登录模块进行用户登录,登录模块虽然看上去比较容易,但是要比注册模块复杂一些,如身份处理,这些复杂的地方需要使用ASP.NET内置对象。 23.1 学习要点 登录模块需要涉及到一些ASP.NET 3.5的基本知识,如果要仔细学习注册模块的开发,需要详细了解本书的一些章节知识,这些章节如下所示: q ASP.NET的网页代码模型。 q Web窗体基本控件。 q 数据库基础。 q ADO.NET常用对象。 q Web窗体数据控件。 q ASP.NET内置对象。 基本了解了以上章节的知识点后,就能够熟练学习和开发此模块。 23.2 系统设计 登录模块需与注册模块不同的地方在于登录模块面向的用户有两种情况,一种是用户已经注册了,另一种是用户还没有注册,对于没有注册的用户需要引导到注册页面,而对于没注册的非法用户必须进行登录限制。 23.2.1 模块功能描述 登录模块是配合注册模块的另一个非常重要的模块,相比之下,登录模块需要考虑更多的情况,例如用户是否注册,以及用户是否是合法用户,如果是合法用户忘记密码了怎么办,如果是非法用户,登录了多次是否要进行限制等等。登录模块的功能基本可以描述如图23-1所示。 图23-1 登录模块基本用户流程图 从登录模块可以看出,当用户进行身份验证后,可能会出现几种情况,包括验证通过、忘记密码和循环身份验证。如果用户是一个正常的用户,可以说一次就能够通过验证,那么这个用户就可以进行后续操作;如果用户已经是注册的用户,但是却忘记了密码,可以通过邮件确认进行密码的索要;如果用户是非法用户,在不断的进行尝试,那么就要禁止非法用户的不断尝试。从上述流程基本上可以规划以下几个页面: q 登录页面:提供用户的主页面。 q 忘记密码页面:提供用户索取密码后提示的页面。 q 用户信息页面:提供用户登录成功后的个人信息页面。 在这其中最主要的是登录页面和忘记密码页面,其中很多的函数的实现都需要在这个页面实现,而其他页面主要是作为提示页面存在的。该模块需要使用ASP.NET内置对象对用户的操作进行保存和限制。 22.2.2 模块流程分析 在对业务进行了基本的划分之后,可以为模块进行基本的流程分析,包括这个模块中最基本的函数,以及这些函数在页面中是如何执行的。首先是登录模块需要提供哪些登录信息,登录模块中最重要的就是用户名和密码,登录模块通常情况下通过用户名和密码进行用户权限的判断。 如果用户登录成功,那么用户就是一个合法用户,可以进行后续的操作,如果用户登录失败,则需要让用户选择是否继续登录或者说明忘记密码,如果用户反复尝试则可以认为这个用户可能是非法用户,需要禁止该用户继续进行登录。在了解了基本的模块流程分析后,就可以进行函数和页面的划分,如图23-2所示。 558 图23-2 基本页面的函数分析 正如图23-2所示,这里主要起到作用的就是login.aspx页面,这个页面主要包括三个函数ifisuser、forget和forbidden,分别作为判断用户是否为正常用户,以及判断用户是否忘记密码和非法用户等操作。在用户正常登录后,可以使用Redirect方法进行页面跳转,如果用户忘记了密码,需要使用发送邮件函数进行邮件发送,如果用户是非法用户,则需要禁止用户的登录。 23.3 数据库设计 对于登录表同样需要进行数据库设计,而登录表的数据库设计比较简单,只需要一个简单的用户表就能够进行登录设计。通常情况下注册模块和登录模块是一起协调合作的,登录模块读取用户表的信息而注册模块用于数据的索引和插入。 23.3.1 数据库设计分析 对于数据库设计分析,只需要简单的进行用户信息表的设计就可以了,但是这里需要使用用户信息表中的邮箱信息进行验证,所以数据库中表的字段可以归纳如下: q 用户名:用户的用户名,用于登录使用。 q 密码:用户的密码,用于登录中输入密码。 q email:用户的E-mail,用于发送邮件,如果用户忘记了密码就可以发送到该邮件。 q QQ/MSN:用户的QQ或MSN,用于连接。 q 是否通过:用户的情况,用户保存用户信息,判断用户是否已经被通过。 这里最主要的字段是email和password,这两个字段用于发送邮件到用户和判断用户是否被通过。如果用户忘记了密码,可以封锁该用户的用户信息然后发送邮件到用户的邮箱中,通过激活提示用户密码。 23.3.2 数据库表的创建 创建表可以通过SQL Server Management Studio视图进行创建也可以通过SQL Server Management Studio 查询使用SQL语句进行创建。登录模块的数据库设计比较简单,这里创建一个Login数据库并创建一个表,如图23-3所示。 559 图23-3 数据库表结构 正如图23-3中所示,表为用户的基本信息创建了字段,这些字段的意义分别为: q id:用于标识用户的ID号,并为自动增长的主键。 q username:用于标识用户名。 q password:用于标识用户密码。 q email:用于标识用户E-mail信息。 q msn:用于标识用户的MSN等信息。 q passed:用于标识用户是否通过审核。 q ask:用于保存用户提示信息的问题。 q answer:用于保存用户提示信息的答案。 上述字段描述了相应的字段在实际应用中的意义,创建表的SQL语句如下所示。 USE Login GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Login( /创建Login表 bh int IDENTITY(1,1) NOT NULL, username nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, password nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, email nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, msn nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, passed nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, ask nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, answer nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_Login PRIMARY KEY CLUSTERED ( bh ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY 上述代码创建了一个数据库并将ID设为自动增长的主键,该数据库用于保存用户的基本信息,本模块通常不会更改数据库的信息,只是对数据库进行调用而已。所以在调用之前必须插入若干新数据,示例代码如下所示。 INSERT NTO Login (username,password,email,msn,passed,ask,answer) 560 alues ('guojing','123321','soundbbg','hellome',1,”你好吗?,”我很好”) 上述代码在数据库中插入了一条用户名为guojing,密码为123321的用户信息,并且这个用户的邮箱为soundbbg,当用户忘记密码时,就会通过这个邮箱发送确认信息。 23.4 界面设计 登录界面也能够吸引用户眼球,在登录界面也可以进行广告推广,因为一个网站的良好表现能够让用户大量的在登录页面停驻,在登录页面进行良好的设计可以使登录页面具有广告效应也能够提高用户体验。 23.4.1 基本界面 由于登录模块可能要考虑到很多的扩展,包括广告位之类的,登录页面也可以单独进行一个页面的制作,这些页面包括基本的TextBox和Label控件用于呈现基本的页面信息,示例代码见光盘中源代码第23章23-123-1Default.aspx所示。 上述代码在页面中使用了三个Label控件,用于显示用户登录必须的信息,包括指引用户如何填写相应的名称,以及提示是否存在该用户,该页面还包括两个TextBox控件用于用户填写相关的信息,并且为了验证用户是否输入正确,在页面中使用了验证控件对用户输入进行控制,示例代码如下所示。 <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="用户名不能为空"></asp:RequiredFieldValidator> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="密码不能为空"></asp:RequiredFieldValidator> 在注册控件已经说明了,验证控件能够验证用户是否输入的是合法的信息,如果用户输入的信息不合法或者输入的信息为空,那么就不应该让操作继续进行,而需要让用户再次进行信息输入。在没有CSS样式控制的情况下,使用了表格进行基本的布局,如图23-4所示。 图23-4 基本界面布局 23.4.2 创建CSS 为了更好的为页面进行页面布局,可以使用CSS进行页面的样式控制。在登录页面中,可以为页面和控件进行样式控制,CSS示例代码如下所示。 body /定义全局 font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; 561 margin:0px 0px 0px 0px; background:gray; .top background:white; margin:0px auto; margin-top:50px; padding-top:10px; padding-bottom:10px; padding-left:10px; width:490px; font-size:18px; .login background:white; margin:0px auto; width:500px; .end /定义头部 /定义登录 /定义底部 background:#f9fbfd; margin:0px auto; width:480px; text-align:center; padding:10px 10px 10px 10px; 上述代码定义了全局页面的字体大小和字体属性,并定义了头部样式、登录主样式和底部样式,定义完成后如图23-5所示。 图23-5 CSS样式控制后的页面 上述页面的布局非常鲜明,让用户一下就知道登录窗口在哪里,但是这个布局并不方便扩展,也不方便广告位的布局。这里不详细讲解如何进行广告位布局,只是介绍如何对登录页面进行样式布局。 562 23.4.3 发送密码页面 对于登录控件而言,需要两个提示页面,这两个提示页面包括发送密码页面和错误信息页面。发送密码页面主要是用于发送忘记密码的用户的密码到用户的邮箱中,这样用户就能够获取相应的信息以登录网站;而错误信息页面主要是用于提示用户输入的次数超过限定的次数,禁止用户再次输入。在这两个页面中,需要进行事务处理的页面只有发送密码页面,发送密码页面需要向指定的用户的邮箱发送邮件,而在发送邮件前,必须让用户输入用户名才能够发送。 注意:在用户忘记密码后,必须让用户输入用户信息,然后在数据库中查询相应的用户的邮箱的信息,而不是直接让用户填写邮箱。 发送页面示例代码见光盘中源代码第23章23-123-1Mail.aspx所示。其中,代码创建了一个发送邮件页面,当用户填写用户名后,系统会在数据库中查找相应的用户名的用户信息,查找完成后会发送相应的信息到用户的邮箱中,如果用户邮箱正确或者用户提示信息正确,那么系统会发送信息到相应邮箱,如果用户邮箱不正确或者用户提示信息不正确,系统则不会将密码信息发送到用户邮箱。页面布局完成后如图23-6所示。 图23-6 发送密码页面 发送密码页面需要进行业务处理,在发送密码时,必须填写用户名和用户提示问题以及答案,,才能够保证此用户是一个安全合法的用户。 23.5 代码实现 在完成基本的CSS页面布局后,就需要进行代码实现,登录模块的代码实现比较复杂,不仅需要查询相应的用户是否是合法用户,当用户忘记密码后,还需要通过邮件进行密码的索取,所以在代码实现中还需要实现邮件发送等功能。 23.5.1 登录代码实现 在用户进行登录时,必须验证用户是否已经登录,如果已经登录则不需要再次登录,如果没有登录,则允许用户进行登录操作,当用户单击按钮时,首先会验证用户是否填写信息,如果没有填写则提示用户填写,如果已经填写了,则判断用户是否是合法用户。 protected void Button1_Click(object sender, EventArgs e) 563 string str = "server='(local)'database='login'uid='sa'pwd='sa'" SqlConnection con = new SqlConnection(str); con.Open; /连接数据库 /创建连接 /打开连接 string strsql = "select * from login where username='"+TextBox1.Text+"' and password='"+TextBox2.Text+"'" SqlDataAdapter da = new SqlDataAdapter(strsql, con); /创建适配器 DataSet ds = new DataSet; /创建数据集 int count=da.Fill(ds, "table"); /填充数据集 if (count > 0) /登录成功 Session"name" = TextBox1.Text; Session"password" = TextBox2.Text; Session"login" = "yes" else Label3.Text = "登录失败" /赋予Session /赋予Session /赋予Session /登录失败 当需要判断一个用户是否为合法用户时,只需要在数据库中查询出该用户即可,如果查询出该用户,则说明这个用户是存在的;如果查询不出该用户,则说明这个用户是不存在的。查询用户可以使用ADO.NET的DataSet对象,示例代码如下所示。 "select * from login where username='"+TextBox1.Text+"' and password='"+TextBox2.Text+"'" SqlDataAdapter da = new SqlDataAdapter(strsql, con); /创建适配器 DataSet ds = new DataSet; /创建数据集 int count=da.Fill(ds, "table"); /填充数据集 上述代码使用DataSet对象和SqlDataAdapter对象进行数据填充,DataSet对象的Fill方法会返回受影响的行数,当执行查询语句时,如果返回受影响的行数大于0,则说明存在这个用户,如果受影响的行数小于等于0,则说明不存在该用户。 注意:在验证用户时一定要同时进行用户名和密码的判断,如果不这样判断,很可能非法用户会猜出用户名就能够进行登录。 如果查询出的结果大于0,则说明用户是合法用户,可以为用户赋予ASP.NET内置对象,以保存用户状态,示例代码如下所示。 Session"name" = TextBox1.Text; Session"password" = TextBox2.Text; Session"login" = "yes" /赋予Session /赋予Session /赋予Session 上述代码当用户登录成功时,给每个用户一个Session对象,如果在一定时间内不进行操作或者用户关闭了浏览器进程,系统就会注销该用户。为了保证用户无法重复多次进行登录,可以在登录页面添加一个计数器,这里可以使用一个Label控件进行计数控制,Label控件可以设置为不可见,初始值为0,示例代码如下所示。 <asp:Label ID="Label4" runat="server" Text="0" Visible="False"></asp:Label> 在执行登录代码时,首先要判断该控件的值。这里设置登录4次后就无法登录了,示例代码如下所示。 if (Convert.ToInt32(Label4.Text) < 4) /登录操作 564 /判断操作如下 if (count > 0) /判断登录次数 /赋予Session /赋予Session /赋予Session Session"name" = TextBox1.Text; Session"password" = TextBox2.Text; Session"login" = "yes" else Label3.Text = "登录失败" int times = Convert.ToInt32(Label4.Text); Label4.Text = (times + 1).ToString; /提示登录失败 /登录次数 /登录次数加一 else Label3.Text = "您已经被禁止登录,请稍后再登录" /静止登录 上述代码首先会判断计数器中的值是不是小于4,如果小于4,则可以进行登录操作,否则就会禁止用户登录。在登录失败时,必须让计数器的值加1,否则计数器的值永远小于4。 23.5.2 邮件发送页面 在用户需要索取自己的密码时,系统对用户进行邮件发送功能的实现和使用,这样就保证了用户信息的机密性,而用户可以在自己的邮箱中获取密码。邮件发送示例代码如下所示。 protected void TextBox1_TextChanged(object sender, EventArgs e) string str = "server='(local)'database='login'uid='sa'pwd='sa'" SqlConnection con = new SqlConnection(str); con.Open; string strsql = "select * from login where username='" + TextBox1.Text + "'" SqlDataAdapter da = new SqlDataAdapter(strsql, con); DataSet ds = new DataSet; int count = da.Fill(ds, "table"); if (count > 0) Label5.Text = ds.Tables"table".Rows0"ask".ToString; Label2.Text = "" else Label2.Text = "没有这个用户" /创建连接字串 /创建连接对象 /打开连接 /编写SQL语句 /创建适配器 /创建数据集 /填充数据集 /查找用户 /提示用户信息 /清空错误信息 /提示用户信息 当用户填写用户名并失去焦点时,系统会在数据库中查询相关的用户信息,如果包括该用户,则会提示这个用户的提问信息;如果没有这个用户,则提示没有这个用户,如图23-7所示。 565 图23-7 搜索用户信息 当用户填写完用户名和用户提示问题答案后,系统会判断用户答案是否正确,如果用户的答案是正确的,就会发送邮件到用户邮箱;如果用户答案不正确,则会提示用户再次输入答案,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) string str = "server='(local)'database='login'uid='sa'pwd='sa'" SqlConnection con = new SqlConnection(str); con.Open; string strsql = "select * from login where username='" + TextBox1.Text + "'" SqlDataAdapter da = new SqlDataAdapter(strsql, con); DataSet ds = new DataSet; int count = da.Fill(ds, "table"); if (count > 0) if (TextBox2.Text != ds.Tables"table".Rows0"answer".ToString) Label2.Text = "提示问题答案回答出错,请再次输入答案." /创建连接字串 /创建连接对象 /打开连接 /配置SQL语句 /创建适配器 /填充数据集 /获取数据 /如果存在用户 /对比问题 /出现错误 else SendUserMail(ds.Tables"table".Rows0"email".ToString, ds.Tables"table".Rows0"password".ToString); else Label5.Text = "没有这个用户" /发送邮件 /实现邮件发送 /声明没有用户 上述代码会判断用户回答的问题是否和本身用户在注册时设置的问题相同,如果相同,就执行SendUserMail函数。SendUserMail函数实现代码如下所示。 private bool SendUserMail(string recevie,string password) try 566 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient; client.Host = "SMTP服务器" /SMPT服务器信息 client.UseDefaultCredentials = false; client.EnableSsl = false; client.Credentials = new System.Net.NetworkCredential("邮件发送邮箱", "发送邮箱密码"); client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("邮件发送邮箱", recevie); message.Subject = "获取密码信息" /邮件的标题 message.Body = "您的密码为:"+password; /邮件的密码 message.BodyEncoding = System.Text.Encoding.UTF8; /邮件的编码形式 message.IsBodyHtml = true; /邮件内容的形式 try client.Send(message); return true; catch (Exception ex) return false; catch /发送邮件 /返回真 /抛出异常 /返回假 /不存在邮件服务器 /返回假 return false; 上述代码实现了邮件的发送功能,这个函数的参数为接受者的地址和密码。在使用这个函数时,SMPT服务器信息可以编写服务器所需要的邮件服务器SMPT服务器,例如126邮箱的SMPT服务器就是SMTP.126.COM。编写完成SMPT服务器之后,只需要在上述代码中编写发送邮箱地址和发送邮箱密码就能够实现邮箱的发送。 注意:如果邮箱需要使用SSL安全证书才能够进行发送和接受,那么就需要配置System.Net.Mail.SmtpClient对象的EnableSsl为true。例如Gmail就需要配置EnableSsl。 23.5.3 根据不同的用户显示不同的内容 为了方便不同的用户显示不同的内容,可以使用ASP.NET提供的内置对象进行编程和判断,例如在登录时,如果登录成功,则系统会为用户配置一个Session内置对象。Session内置对象寄宿在用户浏览器进程内,如果用户浏览器进程关闭或者用户长时间没有操作,则Session内置对象就会注销。 在Session生命周期内,可以使用Session内置对象对不同的用户进行页面编程,这样就能够实现不同的用户显示不同的内容。例如当用户登录后,会跳转到一个个人界面,这个界面可能是通用界面,但是需要不同的用户在当前界面操作。创建一个个人界面,当不同的用户访问该界面时显示的效果也不同,该页面为logined.aspx,示例代码见光盘中源代码第23章23-123-1Logined.aspx所示。 其中,代码在页面中添加了一个Label控件和一个Image控件,这两个控件分别对不同的用户呈现不同的效果。例如当用户“soundbbg”登录后,则系统应该提示说“感谢您soundbbg的登录”,而如果567 是用户“wujunmin”登录,则系统应该提示“感谢您wujunmin的登录”而不是原来的提示信息,同时也可以为相应的用户显示不同的用户头像,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) if (String.IsNullOrEmpty(Session"name".ToString) Response.Redirect("default.aspx"); /判断Session /页面跳转 else Label1.Text = Session"name".ToString; if (Session"name".ToString = "guojing") Image1.ImageUrl = "mail.png" /获取Session /执行编程 /获取图像 上述代码可以使用Session对象进行判断和编程,如果Session对象为空,则说明用户并没有登录或者用户为非法用户,那么就必须跳转到登录页面进行登录。如果用户是合法用户,并且用户是一些例如VIP等用户,就需要对特定的用户进行编程以呈现不同的样式。 在用户登录后,不仅可以使用Session对象进行用户信息和权限的判断,也可以使用Cookie对象对用户信息和权限进行判断。使用Session对象和Cookie对象能够非常方便的进行用户信息的获取和存储。网站应用中,使用Session对象和Cookie对象是最常用的用户信息的获取和存储的方法,开发人员能够根据不同的使用Session对象和Cookie对象的值进行相应的编程。 23.6 实例演示 编写完成后就能够运行模块,这个模块包含登录、用户密码发送和用户个人页面,运行后用户登录页面如下图23-8所示。 图23-8 登录页面 568 当用户进行登录操作后,计数器就会开始计数,如果用户登录失败,用户还有3次机会能够再次进行登录。如果用户多次登录都没有成功,这就说明用户可能忘记了密码或者用户是一个非法用户,对于这样的用户必须禁止再次登录,如图23-9所示。 如果用户登录成功,则可以在相同的页面进行不同的用户信息的呈现,如果用户是VIP用户或者某个特殊的用户,就可以使用编程的方法为用户进行相应的页面

    注意事项

    本文(ASPNET开发大全第23章登录模块设计.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开