在登录页面中,用户输入用户名和密码,提交该页面送回服务器,应用程序根据存储在数据库中的数据来验证请求,用户通过验证后,ASP.NET发出一个Cookie,里面包括了为此用户产生的一个有效的身份票据,该身份票据是用户进行系统访问的“通行证”。在随后发出的请求页面的请求报头里包含此Cookie,如果没有通过验证则用户被重新定位到登录页面。添加票证参考下面的方法。 代码演示:基于用户名的身份验证票证
- /**
- * 登录页面代码
- * 添加票证
- */
- protected void btnLogin_Click(object sender, EventArgs e)
- {
- string loginname = this.txtLoginName.Text;
- string loginpwd = this.txtLoginPwd.Text;
- if (loginname == "admin" && loginpwd == "123456")
- {
- System.Web.Security.FormsAuthentication.SetAuthCookie(loginname, false); ①
- Response.Redirect("Main.aspx");
- }
- }
- /**
- * 主页面代码
- * 删除票证
- */
- protected void btnLogout_Click(object sender, EventArgs e)
- {
- System.Web.Security.FormsAuthentication.SignOut(); ②
- Response.Redirect("UserLogin.aspx");
- }
复制代码代码解析: ① 添加票证,即当前登录用户信息记录于Cookie中,以备后序访问中的验证。SetAuthCookie方法的第一个参数,是指已经经过验证的用户名,第二个参数,是指是否添加cookie持久验证。 ② 删除票证,相当于注销操作,需要手动跳转页面。 保存上面代码,运行后效果如下图所示:
ASP.NET教程
| 在进行身份验证和权限控制的时候,如果当前访问被拒绝的话,除了页面资源之外,图片资源以及样式资源也会被拒绝访问。我们可以将资源分类,把允许匿名访问的资源放到一个单独的文件夹中,然后在这个文件夹中放入一个web.config,开发当前文件夹的访问权限。 |
² 结合Forms身份验证 在web.config中结合Forms可以进行高级验证,在一些对安全性要求不高的应用程序,还可以将身份验证信息存储到配置文件中进行验证。
- //web.config文件
- <authentication mode="Forms">
- <forms name="myForm" loginUrl="UserLogin.aspx" timeout="10">
- <credentials ① passwordFormat="Clear" ②>
- <user name="admin" password="123"/> ③
- </credentials>
- </forms>
- </authentication>
- //ASP.NET代码
- protected void btnLogin_Click(object sender, EventArgs e)
- {
- string loginname = this.txtLoginName.Text;
- string loginpwd = this.txtLoginPwd.Text;
- if (System.Web.Security.FormsAuthentication.Authenticate(loginname,
- loginpwd)) ④
- {
- System.Web.Security.FormsAuthentication.SetAuthCookie(loginname, false);
- Response.Redirect("Main.aspx");
- }
- }
复制代码代码解析: ① <credentials>配置节允许在配置文件中定义登录名和密码。 ② passwordFormat属性用于指定存储密码的加密格式。可以指定为Clear(指定密码不加密)、MD5(指定使用MD5哈希算法给密码加密)、SHA1(指定使用SHA1哈希算法给密码加密)三种格式,默认为SHA1。 ③ <user>配置节用来存储指定的登录名和密码。 ④ Authenticate方法可以校验与配置文件中存储的密码信息是否一致。
|