前言
前些天一个朋友说他们客户的网站出了点故障,让我帮忙看看,这个网站还是用 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); } else Response.Redirect("logon.aspx", true); }
-
编写 Logon.aspx 页面的前端代码,比较简单,忽略
-
运行项目,输入账号和密码,点击登录按钮,即可验证登录效果。
我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。
都看到这了,求个点赞、关注、在看三连呗,感谢支持。