马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

ASP.NET安全机制(三)基于用户名的安全机制

[复制链接]
查看4812 | 回复0 | 2012-12-6 13:53:48 | 显示全部楼层 |阅读模式
在登录页面中,用户输入用户名和密码,提交该页面送回服务器,应用程序根据存储在数据库中的数据来验证请求,用户通过验证后,ASP.NET发出一个Cookie,里面包括了为此用户产生的一个有效的身份票据,该身份票据是用户进行系统访问的“通行证”。在随后发出的请求页面的请求报头里包含此Cookie,如果没有通过验证则用户被重新定位到登录页面。添加票证参考下面的方法。
代码演示:基于用户名的身份验证票证
  1. /**
  2. * 登录页面代码
  3. * 添加票证
  4. */
  5. protected void btnLogin_Click(object sender, EventArgs e)
  6. {
  7.     string loginname = this.txtLoginName.Text;
  8.     string loginpwd = this.txtLoginPwd.Text;
  9.     if (loginname == "admin" && loginpwd == "123456")
  10.     {
  11.         System.Web.Security.FormsAuthentication.SetAuthCookie(loginname, false);   ①
  12.         Response.Redirect("Main.aspx");
  13.     }
  14. }
  15. /**
  16. * 主页面代码
  17. * 删除票证
  18. */
  19. protected void btnLogout_Click(object sender, EventArgs e)
  20. {
  21.     System.Web.Security.FormsAuthentication.SignOut();   ②
  22.     Response.Redirect("UserLogin.aspx");
  23. }
复制代码
代码解析:
① 添加票证,即当前登录用户信息记录于Cookie中,以备后序访问中的验证。SetAuthCookie方法的第一个参数,是指已经经过验证的用户名,第二个参数,是指是否添加cookie持久验证。
② 删除票证,相当于注销操作,需要手动跳转页面。
保存上面代码,运行后效果如下图所示:

ASP.NET教程

ASP.NET教程


提示
在进行身份验证和权限控制的时候,如果当前访问被拒绝的话,除了页面资源之外,图片资源以及样式资源也会被拒绝访问。我们可以将资源分类,把允许匿名访问的资源放到一个单独的文件夹中,然后在这个文件夹中放入一个web.config,开发当前文件夹的访问权限。

² 结合Forms身份验证
web.config中结合Forms可以进行高级验证,在一些对安全性要求不高的应用程序,还可以将身份验证信息存储到配置文件中进行验证。

  1. //web.config文件
  2. <authentication mode="Forms">
  3.   <forms name="myForm" loginUrl="UserLogin.aspx" timeout="10">
  4.     <credentials   ① passwordFormat="Clear"   ②>
  5.       <user name="admin" password="123"/>   ③
  6.     </credentials>
  7.   </forms>
  8. </authentication>
  9. //ASP.NET代码
  10. protected void btnLogin_Click(object sender, EventArgs e)
  11. {
  12.     string loginname = this.txtLoginName.Text;
  13.     string loginpwd = this.txtLoginPwd.Text;
  14.   if (System.Web.Security.FormsAuthentication.Authenticate(loginname,
  15.   loginpwd))   ④
  16.     {
  17.         System.Web.Security.FormsAuthentication.SetAuthCookie(loginname, false);
  18.         Response.Redirect("Main.aspx");
  19.     }
  20. }
复制代码
代码解析:
① <credentials>配置节允许在配置文件中定义登录名和密码。
② passwordFormat属性用于指定存储密码的加密格式。可以指定为Clear(指定密码不加密)、MD5(指定使用MD5哈希算法给密码加密)、SHA1(指定使用SHA1哈希算法给密码加密)三种格式,默认为SHA1
③ <user>配置节用来存储指定的登录名和密码。
④ Authenticate方法可以校验与配置文件中存储的密码信息是否一致。

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则