文档章节

登录模块验证

CoderPeng
 CoderPeng
发布于 2015/11/17 11:31
字数 1710
阅读 16
收藏 0

ASP.NET入门篇【项目实战】打造一个自己的相册(二)登录模块

 

 

本文转载来源于:http://hi.baidu.com/44498/blog/item/59db5da17d24c28146106478.html

进行本次项目实战,需要有一定的C#基础知识,所以,在初期的几篇里面,我在文中尽可能的多贴图以进行示例,以后逐渐减少图片说明。

 

昨天已经介绍了流程和基本功能,今天简单的介绍一下用户登录模块的做法。

不要担心,非常简单。

打开Login.aspx页面,这是我们昨天设计的空白页面,用户登录,现在,我们来完善它的外观和功能。

简单的登录需要一个账号输入框,一个密码输入框,以及一个提交按钮;如图所示:


当然,喜欢用ASP.NET的标准控件库也行,喜欢用HTML组的控件也可以。

在输入密码的时候,都是以"*"号密文显示的,那么我们要调整一下密码框的属性,指定其类型是password类型。如图:

界面设计完毕,是个什么样子呢?大概的看一下吧,还算说得过去。

【如果要更好看,当然需要美工人员的帮助】

然后,该实现登录的功能了吧?

先谈谈我们的目标,也就是输入账号和密码以后,如果通过验证,则跳转到Default.aspx页面,提示登录成功,反之,则给予相应的提示。

账号和密码保存在哪里呢?当然是数据库里。

好,我们来创建一个数据库吧。【我这里使用的是SQL SERVER 2005,当然,你用其他的也行】

打开红圈选中的 SQL Server Management Studio ,其实也就等同于SQL SERVER 2000里的企业管理器。

然后,创建一个数据库,名称叫做PhotoDB。如图:



对着数据库三个字点击鼠标右键,选择新建数据库,然后名称输入PhotoDB。

然后,创建一个表,叫做ACCOUNT,保存我们的用户名和密码。

创建表也是可视化的向导操作,我就不截图演示了。

表结构如下:

TABLE NAME ACCOUNT

ID     USERID USERPWD

初期结构就先这样,以后的模块有需要,我们再做相应的调整即可。

然后插入一条记录,比如,我的账号是test,密码是123。

OK,数据库创建好了。我们如何通过它来验证我们的用户登录模块呢?

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

分析流程:用户打开login.aspx页面,然后输入账号,密码,点击提交按钮,连接数据库,验证,出结果。

大概就是这么个流程。

第一步的关键在哪里?就在提交按钮被点击以后,触发的事件上。

我们打开设计页面,双击提交按钮,进入到代码里面。

如图:

进入代码文件后如图所示:


现在开始写代码?不,当然不。先来建立和数据库的一个连接吧。

在解决方案资源管理器中,鼠标右键单击网站项目,如图:

选择,“添加新项”,弹出窗体,选择 Linq To SQL 类。

然后系统提示你,是否把类文件保存到App_Code文件夹里,选择 是 ,即可。 如图:



点击“是”,稍等2,3秒,会自动打开一个界面,提供给我们存储表结构的地方。




点击“服务器资源管理器”,然后右键单击“数据连接”,选择,“添加连接”,如图:

然后弹出一个新的窗口:

要注意的是,连接字符串,我这里用的是SQL SERVER 2005 EXPRESS,所以连接字符串是.\SQLEXPRESS,如果用的是企业版,就输入 . 即可。如果是SQL SERVER 2000,输入.即可。

填写完毕,点击测试连接,如果提示连接成功,点击确定按钮即可。

然后,在左侧的服务器资源管理器里面,找到我们的ACCOUNT表,拖拽到图中红字的位置。



然后,等待1,2秒,红字所示的地方会出现我们的表结构。如图:



从图中可以看出,表结构已经成功的映射过来了。。。然后单击保存按钮即可。

这个时候,我们要开始写代码了。

在App_Code文件夹里创建一个类,名字叫做UserCon即可,然后在里面写代码,如图:

然后在这个类里面开始本项目的第一行代码的编写。【折腾这么长时间才开始写代码,其实是好事。。。】

代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

 

public class UserCon
{
    public static CTDCDataContext Ct = new CTDCDataContext();

    public static ACCOUNT UserLogin(string id, string pwd)
    {
        var u = Ct.ACCOUNT.FirstOrDefault(c => c.USERID == id && c.USERPWD == pwd);

        return u;
    }
}

OK,这里是我们登录模块所需要的核心代码,其功能就是通过验证用户输入的账号和密码,然后到数据库中进行检索。代码比较简单,我就不写注释了。

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

这只是把代码写在了我们定义的类中,那么,如何让用户在登录的时候调用这个类里面的方法以实现登录验证的效果呢?

很简单,打开login.aspx页面的类的文件,也就是login.aspx.cs,图片太大我就不贴图了,直接上代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;


public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        this.Text1.Focus();
    }
    protected void ButtonSub_Click(object sender, EventArgs e)
    {
        if (UserCon.UserLogin(Text1.Value.Trim(), Text2.Value.Trim()) != null)
        {
            Response.Redirect("~/Default.aspx");
        }

        else
        {
            Page.ClientScript.RegisterStartupScript
              (this.GetType(), "Windows IE", "<script>alert('密码不正确!');</script>");

        }  
    }
}

从代码中可以清晰的看到,依然是从我们之前定义的那个protected void ButtonSub_Click(object sender, EventArgs e) ,按钮单击事件中调用了我们的登录模块验证方法。

那么,效果如何?

我们来试试看。

打开Login.aspx页面,然后随便输入一些字符。。。点击提交按钮。。。

结果如图:

提示密码不正确。【其实应该提示账号或密码不正确,偷个懒】

输入正确的账号test,和正确的密码123,结果如何呢?

结果如图:



可以看到,登录成功,并且成功跳转到了Default.aspx页面。

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

额,做了这么长时间的教程,好累,基本上一个登陆模块就完成了功能。

不过有些朋友可能有疑问,如果直接访问Default.aspx页面,那么岂不是跳过了我们的验证模块,

我们辛辛苦苦的写代码【尽管只有不到10行就实现了】岂不是白费力气?

没关系,这个问题更简单,下一次,我们来解决这个问题,

并且涉及到全新的模块设计和功能实现。。。

 

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

谢谢。同时也希望能对新人有所帮助。。。

© 著作权归作者所有

上一篇: webservices学习
下一篇: 登录模块验证
CoderPeng
粉丝 0
博文 140
码字总数 78649
作品 0
青浦
程序员
私信 提问
音视频和数据传输的局域网通讯

随着全球信息化进程的不断发展,越来越多的企业使用局域网来管理各种事务。但随着局域网的机器增多,软件的应用对局域网的信息吞吐、处理能力的要求也越高。为解决上述矛盾,就有必要设计一个...

AnyChat
2014/12/19
699
0
thinkphp框架模块部署,验证用户登录问题

在每个Action里都验证一次?还是写在某个公共函数里调用?,还是有更好的方法呢,我目前是放在公共函数里面,但这样每次要验证的时候都需要调用,因为是模块部署,现在是后台管理的模块,基本...

自由发挥
2014/06/11
463
6
Linux服务器安全策略配置-PAM身份验证模块(二)

○ 本文导航 关于PAM PAM身份验证配置文件 PAM配置文件语法格式 PAM模块接口 PAM控制标志 PAM配置方法 PAM身份验证安全配置实例 - 强制使用强密码(用户密码安全配置) - 用户SSH登录失败尝试...

HMLinux
2017/05/10
0
0
Linux之PAM可动态加载的认证模块

在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等。在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(P...

城市之雾
03/22
27
0
了解和配置 PAM

插入式验证模块(Pluggable Authentication Module,PAM)API 将公开一组功能,应用程序程序员可以使用这些功能来实现与安全性相关的功能,例如用户验证、数据加密、LDAP 等。在本文中,获得...

红薯
2009/04/20
633
0

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
14分钟前
4
0
redis 命令

redis 秒杀用到的 原子锁 :$redis->decr('jili_reward_goods_stock_' . $gifts_id) redis 秒杀用到的原子锁在秒杀过程中库存量增加 $redis->incrBy('key1', 10); redis 键查看重复:$redis-......

小小小壮
14分钟前
3
0
像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海《基于云架构的研发模式演进》主题演讲中,正式宣布: “今天,我们同微软联合发布...

阿里巴巴云原生
23分钟前
4
0
SpringBoot配置数据源

默认数据源 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是: org.apache.tomcat.jdbc.pool.DataSource......

Gx_ww
26分钟前
4
0
Java应用在docker环境配置容器健康检查

在《极速体验docker容器健康》一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看。 实战环境信息 操作系统:macOS Catalina ...

程序员欣宸
28分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部