浅析ASP.NET验证方式

 在用ASP.NET建立的页面应用程序中,对于安全性的处理很关键,其中包括用户的登录控制以及对于不同用户实施的不同访问权限的控制。
  ASP.NET本身也提供了不少的身份验证供开发者使用,其中包括基于windows的身份验证和基于窗体的身份验证。以下简单介绍一下这两种方式:
1.基于windows的身份验证
  此种方式的身份验证在ASP.NET应用程序所在的windows服务器和客户机之间进行处理。该请求直接发送给IIS来进行验证。在此种验证方式中,需要在ASP.NET程序的根目录下的WEB.CONFIG文件中添加如下内容:
<System.web>
<authentication mode =”Windows”/>
<authorization>
<allow users=”DomainNameUserName1”>
<deny users=”*”>
</authorization>
</System.web>
  这段代码设定身份验证模式为windows,除UserName1之外,其他的用户都不能登录到系统中。<allow users=”DomainNameUserName”>指定了允许进入系统的用户,若允许多个用户同时进入系统,则在用户名之间用逗号隔开即可,当然也可以设定允许特定的用户组里的用户,此时需要将 <allow users=”DomainNameUserName”>修改为<allow roles=”GroupName”>,若要同时指定几个用户组的话,那么同样在组名之间加上逗号即可。这样GroupName1和GroupName2里面的所有用户均有权限登录到系统。所有的用户和组都是在Windows的计算机管理里面添加的。 总结大全 http://www.lw54.com/html/zongjie/ 
2.基于窗体的身份验证
  使用此种身份验证的话,可以将登录窗口直接放在ASP.NET应用程序中,用户需要登录到系统中时,只需要直接在登录页面上输入用户名和密码即可。这种身份验证有一个缺点,就是在登录时,用户的电脑上和ASP.NET应用程序之间的用户名和密码都是作为明文传送的,有机会被第三者截取到。此时需要和SSL联合起来使用。
  采用基于窗体的身份验证时,需要在web.config里面添加如下的代码:
<system.web>
<authentication mode=”Forms>
<forms name=”Test” loginUrl=”Login.aspx” path=”/”>
</authentication>
<authorization>
<deny users =”?” />
</authorization>
</system.web>
  此段代码制定了身份验证的类型是基于窗体的身份验证,登录页面为Login.aspx。path指定了保存cookie的位置。
  基于窗体的身份验证的方式中,还可以将用户的用户名和密码存储在web.config文件中。这些值存储在<form>元素中的子元素<credentials>中:
<credentials passwordFormat=”Clear”>
<user name=”test” password=”test”>
</credentials>

论文网 http://www.lw54.com

  以上代码在web.config文件中添加了用户名为test,密码为test的一个用户,其中<credentials passwordFormat=”Clear”>表示密码存储为明文,用户的密码直接可以与里面的password值进行比较。Clear还可以用MD5和SHA1代替。采用MD5方式加密,
  MD5表示密码使用MD5散列摘要进行存储,在验证帐号时,用户密码需要先使用MD5算法进行散列,然后再与这个值进行比较。使用MD5,密码的安全性比Clear好。安全性最好的是SHA1,但性能比MD5稍差。
  在后台需要以下代码以调用web.config中的用户名密码:

毕业论文网 http://www.lw54.com

If (FormsAuthentication.Authenticate (TextBox1.Text, TextBox2.Text))
{
FormsAuthentiation.RedirectFromLoginPage (TextBox1.Text, true);
}
Else
{
Response.Write (“Invide credentials”);
}
  以上的例子中,Button1为验证按钮,TextBox1为用户名输入框,TextBox2为密码输入框。FormsAuthentication.Authenticate方法将用户输入的用户名和密码与存储在web.config文件中的用户名和密码进行验证,如果验证通过了,就调用FormsAuthentiation.RedirectFromLoginPage方法,这个方法的第一个参数是用户名,用于进行cookie验证。这个参数不会映射为账户名称,而是由ASP.NET的URL授权功能使用。第二个参数指定是否生成一个永久的cookie,如果是true,终端用户从一个浏览器会话到下一个会话时,就不需要再次登录。
  这种验证方式也可以使用存储在SQL Server中的用户名密码来进行验证,后台代码如下:
string getUser = "select uName,psw from users where uName=@uname and psw=@psw";
SqlConnection myConnection= new SqlConnection(“Data Source=localhost;Initial Catalog=New_Job;Persist Security Info=True;User ID=test;Password=test"); 简历大全 http://www.lw54.com/html/jianli/ 
SqlCommand myCommand = new SqlCommand(getUser, myConnection);
myCommand.Parameters.Add(new SqlParameter("@uname", TextBox1.Text));
myCommand.Parameters.Add(new SqlParameter("@psw", md5_encry( TextBox2.Text)));
myConnection.Open();
SqlDataReader sd= myCommand.ExecuteReader();
if (sd.Read())
{
FormsAuthentiation.RedirectFromLoginPage (TextBox1.Text, true);
}
else 
{
Response.Write(“Invalid credentials”)
}
myConnection.Close();
参考文献:
[1] 《ASP.NET 3.5高级编程》清华大学出版社,杨浩译,作者:Bill Evjen;Scott Hanselman;Devin Rader
[2] 《C#高级编程》 清华大学出版社 Christian Nagel, Bill Evjen, Jay Glynn等著, 李铭译


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值