安全性——驗證與受權,成員資格與角色。web
1、成員資格與角色,正則表達式
第一步:註冊數據庫,在VS中運行dos命令窗口中,輸入:aspnet_regsql,創建數據庫表。sql
如何啓動VS的dos命令窗口,在 ..\Microsoft Visual Studio 2012\Visual Studio Tools 文件中的 VS2012 x64 兼容工具命令提示數據庫
輸入:aspnet_regsqlexpress
按照提示完成數據庫的建立。安全
第二步:配置程序,web.configapp
SQL鏈接語句:ide
<connectionStrings> <add name="conn" connectionString="server=.;database=imd;user=sa;pwd=123"/> </connectionStrings>
membership設置:工具
<membership defaultProvider="AspNetSqlMembershipProvider"> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="conn" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> </providers> </membership>
名稱 : 說明
ApplicationName獲取或設置要存儲和檢索其成員資格信息的應用程序的名稱。
Description獲取一條簡短的易懂描述,它適合在管理工具或其餘用戶界面 (UI) 中顯示。
EnablePasswordReset獲取一個值,指示 SQL Server 成員資格提供程序是否配置爲容許用戶重置其密碼。
EnablePasswordRetrieval獲取一個值,指示 SQL Server 成員資格提供程序是否配置爲容許用戶檢索其密碼。
MaxInvalidPasswordAttempts獲取鎖定成員資格用戶前容許的無效密碼或無效密碼提示問題答案嘗試次數。
MinRequiredNonAlphanumericCharacters獲取有效密碼中必須包含的最少特殊字符數。
MinRequiredPasswordLength獲取密碼所要求的最小長度。
Name得到一個友好名稱,用於在配置過程當中引用提供程序。
PasswordAttemptWindow獲取時間長度,在該時間間隔內對提供有效密碼或密碼答案的連續失敗嘗試次數進行跟蹤。
PasswordFormat獲取一個值,表示用於在 SQL Server 成員資格數據庫中存儲密碼的格式。
PasswordStrengthRegularExpression獲取用於計算密碼的正則表達式。
RequiresQuestionAndAnswer獲取一個值,指示 SQL Server 成員資格提供程序是否配置爲要求用戶在進行密碼重置和檢索時回答密碼提示問題。 ui
RequiresUniqueEmail獲取一個值,指示 SQL Server 成員資格提供程序是否配置爲要求每一個用戶名具備惟一的電子郵件地址。
第三步:程序編寫:membership類,
須要引用
using System.Web.Security;
1.註冊用戶
Membership.CreateUser("qqq", "qqqqqq", "qqq@qq.qq");
2.驗證用戶
//登陸按鈕 protected void Button_denglu_Click(object sender, EventArgs e) { bool isOK = Membership.ValidateUser(TextBox_user.Text,TextBox_pwd.Text); if (isOK == true) { Response.Write("登錄成功!!!"); Label1.Text = Membership.GetUser(TextBox_user.Text).ToString(); } else { Response.Write("shibai!!"); Label1.Text = "未登錄"; } }
成功登陸:
3.修改密碼
使用membership的對象實例方法,GetUser()。
修改按鈕:
//修改密碼按鈕 protected void Button2_Click(object sender, EventArgs e) { MembershipUser user = Membership.GetUser(Label1.Text); //找用戶 if (user != null) { bool pwdOK = user.ChangePassword(TextBox_yuanpwd.Text, TextBox_newpwd.Text);//修改密碼 if (pwdOK == true) { Response.Write("<script>alert('修改爲功!');</script>"); } else { Response.Write("<script>alert('修改失敗!');</script>"); } //user.ChangePassword(TextBox_yuanpwd.Text,TextBox_newpwd.Text);//修改密碼 } }
4.獲取(查找)用戶:
按照如下格式設計一個頁面
C#代碼:
獲取單個單用戶:
//單個用戶按鈕 protected void Button1_Click(object sender, EventArgs e) { MembershipUser user = Membership.GetUser(TextBox1.Text);//獲取單個用戶的數據 Label1.Text = user.Email; }
獲取全部用戶:
//全部用戶按鈕 protected void Button2_Click(object sender, EventArgs e) { MembershipUserCollection users = Membership.GetAllUsers();//獲取全部用戶 //CheckBox的數據綁定。
CheckBoxList1.DataSource = users; CheckBoxList1.DataTextField = "Email"; CheckBoxList1.DataValueField = "UserName"; CheckBoxList1.DataBind(); }
獲取單用戶:
獲取全部用戶:
5.刪除用戶: Membership.DeleteUser(userName);
添加一個刪除按鈕,刪除按鈕代碼:
protected void Button3_Click(object sender, EventArgs e) { //刪除 string userName = CheckBoxList1.SelectedValue; Membership.DeleteUser(userName);//刪除 //從新查詢顯示 MembershipUserCollection users = Membership.GetAllUsers(); CheckBoxList1.DataSource = users; CheckBoxList1.DataTextField = "Email"; CheckBoxList1.DataValueField = "UserName"; CheckBoxList1.DataBind(); }
選中用戶
點擊刪除,刪除成功:
6.禁用或啓用:
在這以前先來了解下SQL中表的兩個列名:IsApproved(是否經過驗證)、IsLockedOut(是否已鎖)
IsApproved是能夠由管理員來修改的,用來斷定新用戶是否經過審覈。
IsLockedOut是用戶嘗試登錄時屢次輸入錯誤的密碼時,帳戶會被鎖定,管理員只能夠解鎖,沒法主動鎖定。
未經過審覈或者被鎖定時,用戶都沒法正常登錄。只有經過審覈而且未鎖定的時候纔可以使用
//禁用按鈕 protected void Button4_Click(object sender, EventArgs e) { string userName = CheckBoxList1.SelectedValue; //找 MembershipUser user = Membership.GetUser(userName); //改(尚未送回數據庫) user.IsApproved = false; //保存(送回數據庫) Membership.UpdateUser(user); } //啓用按鈕 protected void Button5_Click(object sender, EventArgs e) { string userName = CheckBoxList1.SelectedValue; //找 MembershipUser user = Membership.GetUser(userName); //改(尚未送回數據庫) user.IsApproved = true; //保存(送回數據庫) Membership.UpdateUser(user); }
修改後必定要記得改寫數據庫,即UpdateUser(用戶名)。
7.解鎖用戶:
//解鎖按鈕 protected void Button6_Click(object sender, EventArgs e) { string userName = CheckBoxList1.SelectedValue; //找 MembershipUser user = Membership.GetUser(userName); //解鎖 user.UnlockUser(); }