使用 Membership.ValidateUser(Login1.UserName, Login1.Password)验证用户

简介:

    要为后台写一个登陆界面,asp.net 自带Login空间,因为直接就可以了。

      双击添加的Login空间将出现如下代码:

[c-sharp]  view plain copy print ?
  1. protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)  
  2.    {  
  3.        bool Authenticated = false;  
  4.      //  Authenticated = AdminDB.Login(Login1.UserName,Login1.Password);  
  5.        Authenticated = Membership.ValidateUser(Login1.UserName, Login1.Password);  
  6.        e.Authenticated = Authenticated;  
  7.        if (Authenticated == true)  
  8.        {  
  9.            Response.Redirect("自定义跳转方向,如http://163.com或index.aspx");  
  10.        }  
  11.        else  
  12.            Login1.FailureText = "用户名或密码错误";  
  13.    }  

这里直接调用了System.Web.Security.Membership.ValidateUser(username,password)方法,这样就不用自己再写验证sql语句了。

不过这里的ValidateUser(username,password)只能验证用户名和密码是否匹配,而不能验证其他的内容,为了能够自定义验证内容,我们写了一个验证程序。代码如下:

AdminDB.cs

[c-sharp]  view plain copy print ?
  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Data.SqlClient;  
  11. using MyProviders;  
  12. /// <summary>  
  13. /// AdminDB 的摘要说明  
  14. /// </summary>  
  15. ///   
  16.   
  17. namespace NewsSystem  
  18. {  
  19.     public class AdminDB  
  20.     {  
  21.         public AdminDB()  
  22.         {  
  23.             //  
  24.             // TODO: 在此处添加构造函数逻辑  
  25.             //  
  26.         }  
  27.         public static bool Login(string name, string pwd)  
  28.         {  
  29.             SqlConnection conn = NewsDB.CreatCon();  
  30.             try  
  31.             {  
  32.            //     String strsql = "select * from dbo.AdminUser where mg_login=@login and mg_pwd=@pwd";  
  33.                 //限定UserRoles.roleid=0即只有管理员角色才能登录  
  34.                 //需要注意的是这里字符串很长,在换行时首字符最好流出一个空格。  
  35.                 string strsql = "select  *  from  (((aspnet_Membership INNER JOIN aspnet_users ON "+  
  36.                 " aspnet_Membership.UserId = aspnet_users.UserId) INNER JOIN Users ON "+  
  37.                 " aspnet_users.username=Users.username) INNER JOIN UserRoles ON "+  
  38.                 " Users.userid=UserRoles.userid) where Users.Username=@name and aspnet_Membership.password=@pwd "+  
  39.                 " and UserRoles.roleid=0";  
  40.        
  41.                 SqlParameter[] paras = new SqlParameter[2];  
  42.                 paras[0] = new SqlParameter("@name", SqlDbType.VarChar, 50);  
  43.                 paras[0].Value = name;  
  44.   
  45.                 paras[1] = new SqlParameter("@pwd", SqlDbType.VarChar, 50);  
  46.                 //paras[1].Value = pwd;  
  47.                 paras[1].Value = MyProviders.MySQLMembershipProvider.GetMd5(pwd);//将密码转化为md5格式  
  48.             
  49.                 SqlCommand cmd = new SqlCommand(strsql, conn);  
  50.                 for (int i = 0; i < paras.Length; i++)  
  51.                 {  
  52.                     cmd.Parameters.Add(paras[i]);  
  53.                 }  
  54.                 conn.Open();  
  55.                 SqlDataReader dr = cmd.ExecuteReader();  
  56.                 if (dr.Read())  
  57.                 {  
  58.                     return true;  
  59.                 }  
  60.             }  
  61.             catch (Exception ex)  
  62.             {  
  63.                 throw ex;  
  64.             }  
  65.             finally  
  66.             {  
  67.                 conn.Close();  
  68.             }  
  69.             return false;  
  70.         }  
  71.     }  
  72. }  

NewsDB.cs

[c-sharp]  view plain copy print ?
  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Data.SqlClient;  
  11. /// <summary>  
  12. /// DB 的摘要说明  
  13. /// </summary>  
  14. ///   
  15.   
  16. namespace NewsSystem  
  17. {  
  18.     public class NewsDB  
  19.     {  
  20.         public NewsDB()  
  21.         {  
  22.             //  
  23.             // TODO: 在此处添加构造函数逻辑  
  24.             //  
  25.         }  
  26.         public static SqlConnection CreatCon()  
  27.         {  
  28.             string str = ConfigurationManager.AppSettings["SiteSqlServer"];  
  29.             return new SqlConnection(str);  
  30.         }  
  31.         public static bool Getcmd(String strsql, params SqlParameter[] paras)  
  32.         {  
  33.             SqlConnection conn = NewsDB.CreatCon();  
  34.             try  
  35.             {  
  36.                 conn.Open();  
  37.                 SqlCommand cmd = new SqlCommand(strsql, conn);  
  38.                 for (int i = 0; i < paras.Length; i++)  
  39.                 {  
  40.                     cmd.Parameters.Add(paras[i]);  
  41.                 }  
  42.                 int a = Convert.ToInt32(cmd.ExecuteNonQuery());  
  43.                 if (a > 0)  
  44.                 {  
  45.                     return true;  
  46.                 }  
  47.             }  
  48.             catch (Exception ex)  
  49.             {  
  50.                 throw ex;  
  51.             }  
  52.             finally  
  53.             {  
  54.                 conn.Close();  
  55.             }  
  56.             return false;  
  57.         }  
  58.         public static DataSet Getds(String strsql)  
  59.         {  
  60.             SqlConnection con = NewsDB.CreatCon();  
  61.             DataSet ds = null;  
  62.             try  
  63.             {  
  64.                 SqlDataAdapter da = new SqlDataAdapter(strsql, con);  
  65.                 ds = new DataSet();  
  66.                 da.Fill(ds);  
  67.             }  
  68.             catch (Exception er)  
  69.             {  
  70.                 throw er;  
  71.             }  
  72.             return ds;  




  1.         }  
  2.     }  
  3. }  

[c-sharp]  view plain copy print ?
  1. public static bool Login(string name, string pwd){}  

中我们可以自定义sql语句,比如我们上面的例子就有验证了用户的角色。

参考文章:Visual Studio 2005 Login 控件的使用

 




本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2010/03/22/2297149.html,如需转载请自行联系原作者

目录
相关文章
|
SQL 关系型数据库 MySQL
Access denied for user ‘root‘ @‘123.233.244.218‘(using password:YES)的解决方法
Access denied for user ‘root‘ @‘123.233.244.218‘(using password:YES)的解决方法
171 1
Access denied for user ‘root‘ @‘123.233.244.218‘(using password:YES)的解决方法
|
开发工具 git
Incorrect username or password (access token)
Incorrect username or password (access token)
126 0
Incorrect username or password (access token)
|
数据库
解决sprinboot项目连接数据库出现Access denied for user ‘‘@‘localhost‘ (using password: NO)
解决sprinboot项目连接数据库出现Access denied for user ‘‘@‘localhost‘ (using password: NO)
解决sprinboot项目连接数据库出现Access denied for user ‘‘@‘localhost‘ (using password: NO)
|
数据安全/隐私保护 关系型数据库 Oracle
使用PASSWORD_VERIFY_FUNCTION设置用户密码复杂度
依据PASSWORD_VERIFY_FUNCTION可以设置oracle用户的密码复杂度,比如密码长度>=10,必须包含字母/数字等首先需要创建一个密码验证的function,然后设置profile的PASSWORD_VERIFY_FUNCTION即可 SQL> s...
4279 0
|
数据安全/隐私保护
SAP Spartacus的登录验证机制 - user login Authentication
SAP Spartacus的登录验证机制 - user login Authentication
107 0
SAP Spartacus的登录验证机制 - user login Authentication
|
关系型数据库 MySQL 测试技术
(28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)
在一台测试服务器测试Python脚本时,执行Python脚本时报如下错误:        主要错误信息为“operation the sql fail!1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)”。
3464 0
|
NoSQL Redis 数据安全/隐私保护
AUTH password
为redis服务请求设置一个密码。redis可以设置在客户端执行commands请求前需要通过密码验证。通过修改配置文件的requirepass就可以设置密码。 如果密码与配置文件里面设置的密码一致,服务端就会发会一个OK的状态码,接受客户端发送其他的请求命令,否则服务端会返回一个错误码,客户端需要尝试使用新的密码来进行连接。
1107 0
|
数据安全/隐私保护 网络架构 网络安全
|
数据安全/隐私保护 网络架构 网络安全