ASPNET开发大全第23章登录模块方案设计书Word文件下载.docx
- 文档编号:16403251
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:26.16KB
ASPNET开发大全第23章登录模块方案设计书Word文件下载.docx
《ASPNET开发大全第23章登录模块方案设计书Word文件下载.docx》由会员分享,可在线阅读,更多相关《ASPNET开发大全第23章登录模块方案设计书Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
❑用户信息页面:
提供用户登录成功后的个人信息页面。
在这其中最主要的是登录页面和忘记密码页面,其中很多的函数的实现都需要在这个页面实现,而其他页面主要是作为提示页面存在的。
该模块需要使用ASP.NET内置对象对用户的操作进行保存和限制。
22.2.2模块流程分析
在对业务进行了基本的划分之后,可以为模块进行基本的流程分析,包括这个模块中最基本的函数,以及这些函数在页面中是如何执行的。
首先是登录模块需要提供哪些登录信息,登录模块中最重要的就是用户名和密码,登录模块通常情况下通过用户名和密码进行用户权限的判断。
如果用户登录成功,那么用户就是一个合法用户,可以进行后续的操作,如果用户登录失败,则需要让用户选择是否继续登录或者说明忘记密码,如果用户反复尝试则可以认为这个用户可能是非法用户,需要禁止该用户继续进行登录。
在了解了基本的模块流程分析后,就可以进行函数和页面的划分,如图23-2所示。
图23-2基本页面的函数分析
正如图23-2所示,这里主要起到作用的就是login.aspx页面,这个页面主要包括三个函数ifisuser、forget和forbidden,分别作为判断用户是否为正常用户,以及判断用户是否忘记密码和非法用户等操作。
在用户正常登录后,可以使用Redirect方法进行页面跳转,如果用户忘记了密码,需要使用发送邮件函数进行邮件发送,如果用户是非法用户,则需要禁止用户的登录。
23.3数据库设计
对于登录表同样需要进行数据库设计,而登录表的数据库设计比较简单,只需要一个简单的用户表就能够进行登录设计。
通常情况下注册模块和登录模块是一起协调合作的,登录模块读取用户表的信息而注册模块用于数据的索引和插入。
23.3.1数据库设计分析
对于数据库设计分析,只需要简单的进行用户信息表的设计就可以了,但是这里需要使用用户信息表中的邮箱信息进行验证,所以数据库中表的字段可以归纳如下:
❑用户名:
用户的用户名,用于登录使用。
❑密码:
用户的密码,用于登录中输入密码。
❑email:
用户的E-mail,用于发送邮件,如果用户忘记了密码就可以发送到该邮件。
❑QQ/MSN:
用户的QQ或MSN,用于连接。
❑是否通过:
用户的情况,用户保存用户信息,判断用户是否已经被通过。
这里最主要的字段是email和password,这两个字段用于发送邮件到用户和判断用户是否被通过。
如果用户忘记了密码,可以封锁该用户的用户信息然后发送邮件到用户的邮箱中,通过激活提示用户密码。
23.3.2数据库表的创建
创建表可以通过SQLServerManagementStudio视图进行创建也可以通过SQLServerManagementStudio查询使用SQL语句进行创建。
登录模块的数据库设计比较简单,这里创建一个Login数据库并创建一个表,如图23-3所示。
图23-3数据库表结构
正如图23-3中所示,表为用户的基本信息创建了字段,这些字段的意义分别为:
❑id:
用于标识用户的ID号,并为自动增长的主键。
❑username:
用于标识用户名。
❑password:
用于标识用户密码。
用于标识用户E-mail信息。
❑msn:
用于标识用户的MSN等信息。
❑passed:
用于标识用户是否通过审核。
❑ask:
用于保存用户提示信息的问题。
❑answer:
用于保存用户提示信息的答案。
上述字段描述了相应的字段在实际应用中的意义,创建表的SQL语句如下所示。
USE[Login]
GO
SETANSI_NULLSON
SETQUOTED_IDENTIFIERON
CREATETABLE[dbo].[Login](//创建Login表
bh][int]IDENTITY(1,1)NOTNULL,
username][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
password][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
email][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
msn][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
passed][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
ask][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
answer][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_Login]PRIMARYKEYCLUSTERED
(
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)
alues
('
guojing'
'
123321'
soundbbg@'
hellome@'
1,”你好吗?
’,”我很好”)
上述代码在数据库中插入了一条用户名为guojing,密码为123321的用户信息,并且这个用户的邮箱为soundbbg@,当用户忘记密码时,就会通过这个邮箱发送确认信息。
23.4界面设计
登录界面也能够吸引用户眼球,在登录界面也可以进行广告推广,因为一个网站的良好表现能够让用户大量的在登录页面停驻,在登录页面进行良好的设计可以使登录页面具有广告效应也能够提高用户体验。
23.4.1基本界面
由于登录模块可能要考虑到很多的扩展,包括广告位之类的,登录页面也可以单独进行一个页面的制作,这些页面包括基本的TextBox和Label控件用于呈现基本的页面信息,示例代码见光盘中源代码\第23章\23-1\23-1\Default.aspx所示。
上述代码在页面中使用了三个Label控件,用于显示用户登录必须的信息,包括指引用户如何填写相应的名称,以及提示是否存在该用户,该页面还包括两个TextBox控件用于用户填写相关的信息,并且为了验证用户是否输入正确,在页面中使用了验证控件对用户输入进行控制,示例代码如下所示。
<
asp:
RequiredFieldValidatorID="
RequiredFieldValidator1"
runat="
server"
ControlToValidate="
TextBox1"
ErrorMessage="
用户名不能为空"
>
<
/asp:
RequiredFieldValidator>
RequiredFieldValidator2"
密码不能为空"
在注册控件已经说明了,验证控件能够验证用户是否输入的是合法的信息,如果用户输入的信息不合法或者输入的信息为空,那么就不应该让操作继续进行,而需要让用户再次进行信息输入。
在没有CSS样式控制的情况下,使用了表格进行基本的布局,如图23-4所示。
图23-4基本界面布局
23.4.2创建CSS
为了更好的为页面进行页面布局,可以使用CSS进行页面的样式控制。
在登录页面中,可以为页面和控件进行样式控制,CSS示例代码如下所示。
body//定义全局
{
font-size:
12px;
font-family:
Geneva,Arial,Helvetica,sans-serif;
margin:
0px0px0px0px;
background:
gray;
}
.top//定义头部
white;
0pxauto;
margin-top:
50px;
padding-top:
10px;
padding-bottom:
padding-left:
width:
490px;
18px;
.login//定义登录
500px;
.end//定义底部
#f9fbfd;
480px;
text-align:
center;
padding:
10px10px10px10px;
上述代码定义了全局页面的字体大小和字体属性,并定义了头部样式、登录主样式和底部样式,定义完成后如图23-5所示。
图23-5CSS样式控制后的页面
上述页面的布局非常鲜明,让用户一下就知道登录窗口在哪里,但是这个布局并不方便扩展,也不方便广告位的布局。
这里不详细讲解如何进行广告位布局,只是介绍如何对登录页面进行样式布局。
23.4.3发送密码页面
对于登录控件而言,需要两个提示页面,这两个提示页面包括发送密码页面和错误信息页面。
发送密码页面主要是用于发送忘记密码的用户的密码到用户的邮箱中,这样用户就能够获取相应的信息以登录网站;
而错误信息页面主要是用于提示用户输入的次数超过限定的次数,禁止用户再次输入。
在这两个页面中,需要进行事务处理的页面只有发送密码页面,发送密码页面需要向指定的用户的邮箱发送邮件,而在发送邮件前,必须让用户输入用户名才能够发送。
注意:
在用户忘记密码后,必须让用户输入用户信息,然后在数据库中查询相应的用户的邮箱的信息,而不是直接让用户填写邮箱。
发送页面示例代码见光盘中源代码\第23章\23-1\23-1\Mail.aspx所示。
其中,代码创建了一个发送邮件页面,当用户填写用户名后,系统会在数据库中查找相应的用户名的用户信息,查找完成后会发送相应的信息到用户的邮箱中,如果用户邮箱正确或者用户提示信息正确,那么系统会发送信息到相应邮箱,如果用户邮箱不正确或者用户提示信息不正确,系统则不会将密码信息发送到用户邮箱。
页面布局完成后如图23-6所示。
图23-6发送密码页面
发送密码页面需要进行业务处理,在发送密码时,必须填写用户名和用户提示问题以及答案,,才能够保证此用户是一个安全合法的用户。
23.5代码实现
在完成基本的CSS页面布局后,就需要进行代码实现,登录模块的代码实现比较复杂,不仅需要查询相应的用户是否是合法用户,当用户忘记密码后,还需要通过邮件进行密码的索取,所以在代码实现中还需要实现邮件发送等功能。
23.5.1登录代码实现
在用户进行登录时,必须验证用户是否已经登录,如果已经登录则不需要再次登录,如果没有登录,则允许用户进行登录操作,当用户单击【登录】按钮时,首先会验证用户是否填写信息,如果没有填写则提示用户填写,如果已经填写了,则判断用户是否是合法用户。
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringstr="
server='
(local)'
;
database='
login'
uid='
sa'
pwd='
"
//连接数据库
SqlConnectioncon=newSqlConnection(str);
//创建连接
con.Open();
//打开连接
stringstrsql=
"
select*fromloginwhereusername='
+TextBox1.Text+"
'
andpassword='
+TextBox2.Text+"
SqlDataAdapterda=newSqlDataAdapter(strsql,con);
//创建适配器
DataSetds=newDataSet();
//创建数据集
intcount=da.Fill(ds,"
table"
);
//填充数据集
if(count>
0)//登录成功
Session["
name"
]=TextBox1.Text;
//赋予Session
password"
]=TextBox2.Text;
/赋予Session
login"
]="
yes"
//赋予Session
}
else
Label3.Text="
登录失败"
//登录失败
当需要判断一个用户是否为合法用户时,只需要在数据库中查询出该用户即可,如果查询出该用户,则说明这个用户是存在的;
如果查询不出该用户,则说明这个用户是不存在的。
查询用户可以使用ADO.NET的DataSet对象,示例代码如下所示。
//创建适配器
//创建数据集
//填充数据集
上述代码使用DataSet对象和SqlDataAdapter对象进行数据填充,DataSet对象的Fill方法会返回受影响的行数,当执行查询语句时,如果返回受影响的行数大于0,则说明存在这个用户,如果受影响的行数小于等于0,则说明不存在该用户。
在验证用户时一定要同时进行用户名和密码的判断,如果不这样判断,很可能非法用户会猜出用户名就能够进行登录。
如果查询出的结果大于0,则说明用户是合法用户,可以为用户赋予ASP.NET内置对象,以保存用户状态,示例代码如下所示。
上述代码当用户登录成功时,给每个用户一个Session对象,如果在一定时间内不进行操作或者用户关闭了浏览器进程,系统就会注销该用户。
为了保证用户无法重复多次进行登录,可以在登录页面添加一个计数器,这里可以使用一个Label控件进行计数控制,Label控件可以设置为不可见,初始值为0,示例代码如下所示。
LabelID="
Label4"
Text="
0"
Visible="
False"
Label>
在执行登录代码时,首先要判断该控件的值。
这里设置登录4次后就无法登录了,示例代码如下所示。
if(Convert.ToInt32(Label4.Text)<
4)
//登录操作
//判断操作如下
0)//判断登录次数
//提示登录失败
inttimes=Convert.ToInt32(Label4.Text);
//登录次数
Label4.Text=(times+1).ToString();
//登录次数加一
您已经被禁止登录,请稍后再登录"
//静止登录
上述代码首先会判断计数器中的值是不是小于4,如果小于4,则可以进行登录操作,否则就会禁止用户登录。
在登录失败时,必须让计数器的值加1,否则计数器的值永远小于4。
23.5.2邮件发送页面
在用户需要索取自己的密码时,系统对用户进行邮件发送功能的实现和使用,这样就保证了用户信息的机密性,而用户可以在自己的邮箱中获取密码。
邮件发送示例代码如下所示。
protectedvoidTextBox1_TextChanged(objectsender,EventArgse)
//创建连接字串
//创建连接对象
//打开连接
stringstrsql="
+TextBox1.Text+"
//编写SQL语句
intcount=da.Fill(ds,"
//填充数据集
0)//查找用户
Label5.Text=ds.Tables["
].Rows[0]["
ask"
].ToString();
//提示用户信息
Label2.Text="
//清空错误信息
没有这个用户"
//提示用户信息
当用户填写用户名并失去焦点时,系统会在数据库中查询相关的用户信息,如果包括该用户,则会提示这个用户的提问信息;
如果没有这个用户,则提示没有这个用户,如图23-7所示。
图23-7搜索用户信息
当用户填写完用户名和用户提示问题答案后,系统会判断用户答案是否正确,如果用户的答案是正确的,就会发送邮件到用户邮箱;
如果用户答案不正确,则会提示用户再次输入答案,示例代码如下所示。
//配置SQL语句
//获取数据
0)//如果存在用户
if(TextBox2.Text
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASPNET 开发 大全 23 登录 模块 方案设计