从asp.net webform开发到asp.net mvc技术上发生极大的变化,我们来讲解常用认证方式
1、为什么要认证
你的网站是要管理的,不是随便人就能登陆的,所以要认证。就是对网站进行保护。
2、认证方式枚举
一、Session方式
1、传统webform的认证就是所有要认证的页面继承一个自定义基类BasePage,然后重写OnPreRender,代码如下:
1 namespace AaspnetAuth 2 { 3 public class SessionBasePage : System.Web.UI.Page 4 { 5 protected override void OnPreRender(EventArgs e) 6 { 7 base.OnPreRender(e); 8 if (Session["UserInfo"] == null) 9 { 10 Response.Redirect("~/SessionLogin/SessionLogin.aspx"); 11 } 12 } 13 } 14 }
退出的代码如下
1 protected void btnlogout_Click(object sender, EventArgs e) 2 { 3 if (Session["UserInfo"] == null) 4 { 5 6 } 7 else 8 { 9 Session["UserInfo"] = null; 10 Response.Redirect("SessionLogin.aspx"); 11 } 12 }
二、自定义cookie模式
1、传统webform的认证就是所有要认证的页面继承一个自定义基类BasePage,然后重写OnPreRender,代码如下:
1 public class CookieBase: System.Web.UI.Page 2 { 3 protected override void OnPreInit(EventArgs e) 4 { 5 base.OnPreInit(e); 6 //说明没有登录过 7 if (Request.Cookies["UserInfo"] == null) 8 { 9 Response.Redirect("~/CookieLogin/CookieLogin.aspx"); 10 } 11 } 12 }
登陆的代码如下,其中trueUserAccount为用户的的登录名,建议使用guid
1 HttpCookie cookie = new HttpCookie("UserInfo");//初使化并设置Cookie的名称 2 DateTime dt = DateTime.Now; 3 TimeSpan ts = new TimeSpan(1, 0, 0, 0, 0);//过期时间为1天 4 cookie.Expires = dt.Add(ts);//设置过期时间 5 cookie.Values.Add("UserName", trueUserAccount); 6 Response.AppendCookie(cookie); 7 8 Response.Redirect("CookieWelcome.aspx");
退出的代码如下:
1 protected void btnlogout_Click(object sender, EventArgs e) 2 { 3 HttpCookie cok = Request.Cookies["UserInfo"]; 4 if (cok != null) 5 { 6 TimeSpan ts = new TimeSpan(-1, 0, 0, 0); 7 cok.Expires = DateTime.Now.Add(ts);//删除整个Cookie,只要把过期时间设置为现在 8 Response.AppendCookie(cok); 9 } 10 Response.Redirect("CookieLogin.aspx"); 11 }
三、域认证
四、单点登陆认证
五、cookie认证的延伸,采用html5的本地存储