Asp.net用户登陆模块(C#) private void btn_login_Click(object sender, System.EventArgs e) { //创建连接对象MyConn SqlConnection MyConn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["myconn"]); try { //判断数据库连接是否打开 if (MyConn.State!=ConnectionState.Open) { //打开数据库连接 MyConn.Open(); } //MD5加密方式生成16位密码与数据库中刻用户名的密码进行比较 string temp_pwd=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtpwd.Text.Trim(),"md5").ToUpper().Substring(8,16); //从数据中检索用户名与密码 string Sql="Select * from admin where admin='"+this.txtuser.Text.Trim()+"' and pwd='"+temp_pwd.ToString()+"'"; //创建SqlCommand 对象Cmd SqlCommand Cmd=new SqlCommand(Sql,MyConn); //执行查询,并返回结果集 SqlDataReader MyReader=Cmd.ExecuteReader(); //判断结果集中是否有与用户名和密码相等的值 if (MyReader.Read()) { //保存会话对象数值 this.Session["login_admin"]=this.txtuser.Text.Trim(); //用户名和密码存在并相等则进入后台 this.Response.Redirect ("index.htm"); } else { //用户名和密码不正确则返回主页 this.Response.Redirect("../index.aspx"); } //关闭数据库 MyConn.Close(); //关闭数据库表 MyReader.Close(); ### ASP.NET用户登录模块分析(C#) #### 模块概述 本文将深入解析一个ASP.NET用户登录模块的实现逻辑,该模块采用C#语言编写。登录模块是Web应用程序中最常见的功能之一,它用于验证用户的身份,确保只有授权用户才能访问特定资源。此模块主要涉及数据库连接、用户输入验证、密码安全处理以及会话管理等方面。 #### 代码详解 ##### 数据库连接 在登录过程中,首先需要建立与数据库的连接。代码中通过以下方式实现了这一目的: ```csharp SqlConnection MyConn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["myconn"]); ``` 这里通过`System.Configuration.ConfigurationSettings.AppSettings["myconn"]`获取数据库连接字符串,通常存储在Web.config或appsettings.json等配置文件中。接着,通过`SqlConnection`类实例化一个数据库连接对象。 接下来检查数据库连接状态,如果连接未打开,则打开连接: ```csharp if (MyConn.State != ConnectionState.Open) { MyConn.Open(); } ``` ##### 密码加密 为了提高安全性,密码在存储和验证时都经过了加密处理。代码中采用了MD5算法对密码进行加密,并将其转换为大写,最后截取中间16位作为最终密码: ```csharp string temp_pwd = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtpwd.Text.Trim(), "md5").ToUpper().Substring(8, 16); ``` 这里使用了`FormsAuthentication.HashPasswordForStoringInConfigFile`方法来生成加密后的密码。MD5虽然在安全性方面存在一定的局限性,但在这里作为一个示例,可以帮助理解密码加密的基本流程。 ##### 查询数据库 通过SQL语句从数据库中检索用户名和密码,并进行比较: ```csharp string Sql = "Select * from admin where admin='" + this.txtuser.Text.Trim() + "' and pwd='" + temp_pwd.ToString() + "'"; SqlCommand Cmd = new SqlCommand(Sql, MyConn); SqlDataReader MyReader = Cmd.ExecuteReader(); ``` 这里需要注意的是,直接拼接SQL语句可能存在SQL注入的风险,建议使用参数化查询以提高安全性。 ##### 登录验证 根据查询结果判断用户名和密码是否匹配: ```csharp if (MyReader.Read()) { this.Session["login_admin"] = this.txtuser.Text.Trim(); this.Response.Redirect("index.htm"); } else { this.Response.Redirect("../index.aspx"); } ``` 如果匹配成功,则将用户名保存到会话中,并重定向至后台页面;如果不匹配,则返回到登录页面。 ##### 异常处理 为了保证程序的健壮性,还增加了异常处理机制: ```csharp catch (SqlException er) { this.Response.Write(er.Message); } ``` 这样可以在发生数据库错误时向用户显示相应的错误信息。 #### 总结 以上就是ASP.NET用户登录模块的核心逻辑。通过这个例子,我们可以了解到如何使用C#进行数据库连接、密码加密处理、查询验证以及异常处理等操作。尽管这是一个简单的示例,但它覆盖了构建安全登录系统所需的关键技术点。对于实际应用而言,还需要考虑更多细节,比如使用更安全的哈希算法(如SHA256)、实现更复杂的错误处理策略以及增加更多的安全措施(如验证码、登录失败次数限制等)。
- zwhthinking2013-05-26有点简单,感觉就像被坑了一样
- zhaoyapeng99992013-09-04还行,就是有点简单,不是想要的。
- songsong12362013-05-08有点简单,内容还好
- 卡多卡瓦手电筒2012-05-18太过简洁,又不是源代码,感觉就像被坑了一样
- 粉丝: 9
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- flinksql专用资源,各种jar包
- CLShanYanSDKDataList.sqlite
- C#ASP.NET销售管理系统源码数据库 SQL2008源码类型 WebForm
- 1111232132132132
- 基于MAPPO算法与DL优化预编码的多用户MISO通信系统双时间尺度传输方案设计源码
- 基于微信拍照功能的ohos开源CameraView控件设计源码
- 基于JavaCV的RTSP转HTTP-FLV流媒体服务设计源码
- 基于Python的西北工业大学MobilePhone软件开发项目设计源码
- 基于Java语言实现的LeetCode-hot100题库精选设计源码
- 基于ThinkPHP5.0的壹凯巴cms设计源码,适用于小型企业建站灵活组装开发