Form表單身份驗證例子

2021-04-20 20:28:07 字數 2979 閱讀 7584

**)步驟:

5,測試,在應用程式下新建兩個目錄admins和users,分別在他們的目錄下放個default.aspx,上面隨便寫些什麼東西,把其中的乙個default.aspx設定問起始頁(在vs2003環境下),如果你輸入名字pwq和密碼是不能夠進入admins目錄下的,因為這個使用者不屬於administrator角色!  

//初始化formsauthentication  

formsauthentication.initialize();

//建立個connection和command物件  

sqlconnection conn = new sqlconnection("server=(local);uid=sa;pwd=mssql;database=test");

sqlcommand cmd = conn.createcommand();

cmd.commandtext = "select roles from users where username=@username and password=@password";

//新增引數以及給引數賦值  

cmd.parameters.add("@username", sqldbtype.varchar, 64);

cmd.parameters["@username"].value = this.textbox1.text;

cmd.parameters.add("@password", sqldbtype.varchar, 128);

cmd.parameters["@password"].value = this.textbox2.text;

//開啟資料庫連線  

conn.open();

//執行命令  

sqldatareader reader = cmd.executereader();

if (reader.read())

else

//關閉資料庫連線和reader  

reader.close();

conn.close();  

說明:我們來看下forms身份驗證基本原理:  

一   身份驗證  

要採用forms身份驗證,先要在應用程式根目錄中的web.config中做相應的設  

置:  

其中表示本應用程式採用forms驗證方  

式。  

標籤中的name表示指定要用於身份驗證的cookie。預設是.aspxauth,其實你可以用任何名字,這也就是你在本地硬碟上看到的cookie裡面的前面的幾個字.  

forms的驗證過程如下:1,生成身份驗證票,2,加密身份驗證票.3,寫回客戶端,4,瀏覽器重新定向.其實這一系列的動作如果我們不用roles的話都是通過formsauthentication.redirectfromloginpage方法來完成了這一系列的工作任務.但是既然我們要使用roles授權,我們就不能夠使用這個方法,而要分開來,一步步完成.  

首先是建立身份驗證票,首先我們看看formsauthenticationticket類的乙個建構函式:  

public   formsauthenticationticket(  

int   version,   //設為1  

string   name,   //使用者標示  

datetime   issuedate,   //cookie   的發出時間,   設定為   datetime.now    

datetime   expiration,   //過期時間  

bool   ispersistent,   //是否永續性(根據需要設定,若是設定為永續性,在發出  

cookie時,cookie的expires設定一定要設定)  

string   userdata,   //這裡用上面準備好的用逗號分割的role字串  

string   cookiepath   //   設為」/」,這要同發出cookie的路徑一致,因為重新整理cookie  

要用這個路徑  

);  

最後個引數可以省略  

formsauthenticationticket   ticket   =   new   formsauthenticationticket    

(1,」kent」,datetime.now,   datetime.now.addminutes(30),   false,userroles)  

然後加密:  

string   hashticket   =   formsauthentication.encrypt(ticket);  

//設定驗證票cookie,第乙個引數為cookie的名字,第二個引數為cookie的值也就是加密後的票  

//設定cookie的有效期是乙個禮拜  

cookie.expires   =   datetime.now.adddays(7);  

//把cookie加進response物件發生到客戶端  

response.cookies.add(cookie);  

//得到請求的url  

string   requesturl   =   formsauthentication.getredirecturl(formsauthentication.formscookiename,false);  

//不要使用formsauthentication.redirectfromloginpage方法,因為這個方法會重寫cookie  

//重新定向到請求的url  

response.redirect(requesturl);   

web.config

基於AD的Form表單身份驗證

預設情況,moss 的身份驗證是基於 ad的,但是基於 ad的使用者身份驗證較適合於企業的內部中使用,若要在外部網路環境下要訪問 moss 那麼基於 ad身份驗證的方式就不太適用了,因為要基於 ad認證必須要開啟些不必要的埠號,所以出於安全原因的考慮,大家就想到基於 form 表單的身份驗證並將使用...

Form身份驗證

安全模式 使用windows身份驗證 使用forms身份驗證 使用最多,也是最常見的方式 使用passport身份驗證 收費 需要ms給介面 forms身份驗證 web.config defaulturl如果直接開啟的就是 登陸位址.aspx 使用者名稱密碼輸入成功後跳轉的頁面 表示所有使用者 表示...

Form身份驗證

forms身份驗證 web.config defaulturl如果直接開啟的就是 登陸位址.aspx 使用者名稱密碼輸入成功後跳轉的頁面 表示所有使用者 表示所有使用者 後台跳轉就不能使用response.redirect而要使用 formsauthentication.redirectfromlo...