asp.net的身份驗證類型如下:
在我們實際的工作中,froms身份驗證用的還是比較多的,我們接下來詳細說一下:
做為web開發的程序員,我想登錄窗體是接觸的太多了??墒牵野l現有的程序員在對身份驗證的時候是把驗證的用戶名保存在一個session里的,然后進入系統的每個頁面都去驗證session是否為空,如果不為空那么就response.redirect("......aspx")。
我認為這種方法相對于asp.net提供的form身份驗證來說是不足的,首先,就是增加代碼量,因為我們在每個頁面都要驗證一下session是否存在;其次,session是存儲在服務器內存中,我認為如果經常使用session勢必會拖慢服務器的速度。而form身份驗證則不同,它是把數據保存在cookie中的,所以,可以減輕服務器的壓力。
舉例一:
在項目中添加兩個頁面:login.aspx(用來做登錄頁面)和main.aspx(主界面)
如果我們添加了from身份驗證的話,那么當然我們首先要先設置不允許匿名訪問網站,接著我們把通過身份驗證的用戶添加到cookie中,web配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<? xml version = "1.0" encoding = "utf-8" ?> < configuration > < system.web > < compilation debug = "true" targetFramework = "4.0" /> < authentication mode = "Forms" > < forms name = "save" loginUrl = "login.aspx" protection = "All" > </ forms > </ authentication > < authorization > < deny users = "?" /> </ authorization > </ system.web > </ configuration > |
說明:
進行設置后,如果我們直接訪問main.aspx頁面,那么會跳轉到login.aspx。
我們在登錄按鈕下寫上如下代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace LastTest { public partial class login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { if (true) //可以通過查詢數據庫 驗證用戶是否合法 { //被注釋的這兩行語句相當于最下面的語句 就是保存用戶后轉回到原來的頁面。 //System.Web.Security.FormsAuthentication.SetAuthCookie(TextBox1.Text, chkIsSavePwd.Checked); //Response.Redirect("main.aspx"); System.Web.Security.FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, chkIsSavePwd.Checked); } else { } } } } |
當然們也可以刪除身份驗證,退出登錄,我們在主界面上加一個注銷按鈕:
注銷下的代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace LastTest { public partial class main : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { //從瀏覽器刪除from驗證票證 System.Web.Security.FormsAuthentication.SignOut(); //重新回到登錄頁面 Response.Redirect("login.aspx"); } } } |
當然,如果一個系統就有幾個人用的話,那么我們也可以添加固定用戶,然后對用戶的密碼可以進行加密:如果MD5加密或者SHA1,當然也可以使用clear(明文,不安全)。
以上就是關于ASP.NETt的窗體身份驗證,希望對大家的學習有所幫助。