前言
前些天一个朋友说他们客户的网站出了点故障,让我帮忙看看,这个网站还是用 ASP.NET WebForm 做的,很久以前的技术了,不过很多客户就是这样,只要网站还能稳定地运行,一般就不会去折腾升级,_。
简单地看了下,问题比较简单,只是在连接 LDAP 域账户进行身份验证的过程中出了问题,随手就解决了,不过 Form Authentication 算是一种经典而又灵活的身份验证的方式,尤其是配合近些年比较流行的 LDAP/AD 域账户,账户的安全由 LDAP/AD 域分配和控制,Form Authentication 的灵活性和方便性就体现出来,前段时间写过一篇 ASP.NET MVC 使用 Form Authentication 的例子,今天继续记录和分享一下 ASP.NET WebForm 使用 Form Authentication 的步骤。
Step By Step 步骤
-
在 .NET FrameWork 框架下创建一个 ASP.NET WebForm 项目
-
配置 Web.config
<configuration><system.web><authentication mode="Forms"><forms loginUrl="Login_.aspx"></forms></authentication><!--设置哪些页面需要身份验证,哪些可以匿名访问,下里这里是所有页面都要身份验证--><authorization><deny users="?"/></authorization>......</system.web>...... </configuration>
-
创建 Logon.aspx 页面,并编写后端登录方法(留意注释)
using System.Data.SqlClient; using System.Web.Security;private bool ValidateUser( string userName, string passWord ) {// 从数据库或其它源验证帐号密码 }// 点击登录按钮 private void cmdLogin_ServerClick(object sender, System.EventArgs e) {// 方法一// 调用 RedirectFromLoginPage 方法自动生成表单身份验证 Cookie,并重定向用户到事件的适当 cmdLogin_ServerClick 页面// if (ValidateUser(txtUserName.Value,txtUserPass.Value))// FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, chkPersistCookie.Checked);// else// Response.Redirect("logon.aspx", true);// 方法二,比较灵活// 自定义 FormsAuthenticationTicket 数据,生成身份验证票证,对其进行加密,创建 Cookie,将其添加到响应中,然后重定向用户if (ValidateUser(txtUserName.Value,txtUserPass.Value)){FormsAuthenticationTicket tkt;string cookiestr;HttpCookie ck;tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");cookiestr = FormsAuthentication.Encrypt(tkt);ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);if (chkPersistCookie.Checked)ck.Expires=tkt.Expiration;ck.Path = FormsAuthentication.FormsCookiePath;Response.Cookies.Add(ck);string strRedirect;strRedirect = Request["ReturnUrl"];if (strRedirect==null)strRedirect = "default.aspx";Response.Redirect(strRedirect, true);}elseResponse.Redirect("logon.aspx", true); }
-
编写 Logon.aspx 页面的前端代码,比较简单,忽略
-
运行项目,输入账号和密码,点击登录按钮,即可验证登录效果。
我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。
都看到这了,求个点赞、关注、在看三连呗,感谢支持。