国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET 安全認證(一)

2024-07-10 13:06:14
字體:
來源:轉載
供稿:網(wǎng)友

代碼寫 n 久了,總想寫得別的。這不,上頭說在整合兩個項目,做成單一登錄(single sign on),也有人稱之為“單點登錄”。查閱相關文檔后,終于實現(xiàn)了,現(xiàn)在把它拿出來與大家一起分享。或許大家會問:“這與標題不符呀?”別急,在下筆之前,我腦子里想到了我剛使用 form 認證時遇到的一些問題,以及使用過程用到的一些技巧(實乃投機取巧是也 ' )。偶打初中那時,語文水平就不怎么滴,考試常常作文寫不出來,所以寫作水平有限,還請大家海量。對了,本人不僅寫作水平有限,編程能力也不是很好,此文供大家學習交流之用,歡迎廣大勞苦群眾拎著雞蛋、捧著鮮花前來評論。轉載請注明原創(chuàng)作者乃寒羽楓是也,不甚感激!

 

 

廢話也說的差不多了,言歸正傳, asp.net 的安全認證,共有“windows”“form”“passport”“none”四種驗證模式。“windows”與“none”沒有起到保護的作用,不推薦使用;“passport”我又沒用過,唉……所以我只好講講“form”認證了。我打算分三部分:

 

 

第一部分 —— 怎樣實現(xiàn)from 認證;

 

 

第二部分 —— form 認證的實戰(zhàn)運用;

 

 

第三部分 —— 實現(xiàn)單點登錄(single sign on)

 

 

第一部分 如何運用 form 表單認證

 

 

一、        新建一個測試項目

 

 

為了更好說明,有必要新建一個測試項目(暫且為“formtest”吧),包含三張頁面足矣(default.aspx、login.aspx、userinfo.aspx)。啥?有人不會新建項目,不會新增頁面?你問我咋辦?我看這么辦好了:拖出去,打回原藉,從幼兒園學起……

 

 

二、        修改 web.config

 

 

1、  雙擊項目中的web.config(不會的、找不到的打 pp)

 

 

2、  找到下列文字 <authentication mode="windows" /> 把它改成:

<authentication mode="forms">

 

 

<forms loginurl="login.aspx" name=".aspxauth"></forms>

 

 

</authentication>

 

 

3、  找到<authorization> <allow users="*" /></authorization>換成

<authorization><deny users="?"></deny></authorization>


 


 


這里沒什么好說的,只要拷貝過去就行。雖說如此,但還是有人會弄錯,如下:

 

 

<authentication mode="forms">

 

 

       <forms loginurl="login.aspx" name=".apsx"></forms>

 

 

<deny users="?"></deny>

 

 

 </authentication>

 

 

若要問是誰把 <deny users="?"></deny> 放入 <authentication> 中的,我會很榮幸地告訴你,那是 n 年前的我:<authentication> 與 <authorization> 都是以 auth 字母開頭又都是以 ation 結尾,何其相似;英文單詞背不下來的我以為他們是一伙的……

 

 

三、        編寫 .cs 代碼——登錄與退出

 

 

1、  登錄代碼:

 

 

a、  書本上介紹的

 

 

         private void btn_login_click(object sender, system.eventargs e)

 

 

         {

 

 

              if(this.txt_username.text=="admin" && this.txt_password.text=="123456")

 

 

              {

 

 

     system.web.security.formsauthentication.redirectfromloginpage(this.txt_username.text,false);

 

 

     }

 

 

}

 

 

b、  偶找了 n 久才找到的

 

 

private void btn_login_click(object sender, system.eventargs e)

 

 

         {

 

 

              if(this.txt_username.text=="admin" && this.txt_password.text=="123456")

 

 

              {

 

 

system.web.security.formsauthentication.setauthcookie(this.txt_username.text,false);

 

 

     response.redirect("default.aspx");

 

 

     }

 

 

}

 

 

以上兩種都可發(fā)放驗證后的 cookie ,即通過驗證,區(qū)別:

 

 

方法 a) 指驗證后返回請求頁面,俗稱“從哪來就打哪去”。比如:用戶沒登錄前直接在 ie 地址欄輸入 http://localhost/formtest/userinfo.aspx ,那么該用戶將看到的是 login.aspx?returnurl=userinfo.aspx ,輸入用戶名與密碼登錄成功后,系統(tǒng)將根據(jù)“returnurl”的值,返回相應的頁面

 

 

方法 b) 則是分兩步走:通過驗證后就直接發(fā)放 cookie ,跳轉頁面將由程序員自行指定,此方法多用于 default.aspx 使用框架結構的系統(tǒng)。

 

 


 


 


2、  退出代碼:

 

 

private void btn_logout_click(object sender, system.eventargs e)

 

 

     {

 

 

system.web.security.formsauthentication.signout();

 

 

}

 

 

四、        如何判斷驗證與否及獲取驗證后的用戶信息

 

 

有的時候,在同一張頁面需要判斷用戶是否已經(jīng)登錄,然后再呈現(xiàn)不同的布局。有人喜歡用 session 來判斷,我不反對此類做法,在此我只是想告訴大家還有一種方法,且看下面代碼:

 

 

if(user.identity.isauthenticated)

 

 

         {

 

 

              //你已通過驗證,知道該怎么做了吧?

 

 

}

 

 

user.identity 還有兩個屬性authenticationtype(驗證類型)與 name(用戶名稱) ,大家要注意的是 name 屬性,此處的user.identity.name將得到,驗證通過(redirectfromloginpage 或setauthcookie)時,我們帶入的第一個參數(shù) this.txt_username.text 。這個參數(shù)很重要,關系到種種……種種的情況,何出此言,且聽下回分解……

 

 

asp.net 安全認證(二)—— 靈活運用 form 表單認證中的 deny 與 allow 及保護 .htm 等文件

 

 

我閃先


 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 四川省| 丹寨县| 周口市| 普宁市| 准格尔旗| 望城县| 明星| 襄垣县| 上杭县| 东阳市| 中阳县| 卢龙县| 广昌县| 凌云县| 和林格尔县| 临武县| 米易县| 岱山县| 安阳县| 襄垣县| 铁岭市| 宁波市| 和顺县| 桃源县| 东港市| 肥西县| 漾濞| 罗山县| 砚山县| 汽车| 玉溪市| 仁怀市| 平利县| 灌南县| 松溪县| 高碑店市| 都安| 汽车| 越西县| 白银市| 潼关县|