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

首頁 > 學院 > 開發設計 > 正文

跨應用程序進行Forms身份驗證詳解

2019-11-17 04:27:38
字體:
來源:轉載
供稿:網友

  先仔細閱讀這段內容:asp.net 支持在分布式環境中(跨單個服務器上的多個應用程序或在網絡場中)進行 Forms 身份驗證。
  之前研究過多站點間的session共享的問題,這里說下跨應用程序進行 Forms 身份驗證詳細實現方式,此方案的基礎就是“跨應用程序進行 Forms 身份驗證”(幫助可點擊鏈接或是自己直接查找MSDN)。
  在VS2005中建立兩個Web應用程度的項目,兩個項目都添加一個Default.aspx頁面,其中一個項目增加Login.aspx頁面,實現“Forms 身份驗證”。
  在兩個項目的Default.aspx.cs代碼頁面添加如下代碼:view plaincopy to clipboardPRint?
Response.Write(User.Identity.Name); //輸出當前Form認證后登錄的用戶名 

Response.Write(User.Identity.Name); //輸出當前Form認證后登錄的用戶名  假設兩個項目的訪問地址如下:
  A項目:http://localhost/test/
  B項目(帶登錄):http://localhost:81/
  從上地址可以看出兩個項目處于不同的域名下,即兩個項目處于兩個不同的Web站點
  設置A項目的web.configview plaincopy to clipboardprint?
 <authentication mode="Forms"> 
 <!--  
  這里loginUrl是指向B項目的登錄頁面  
  注意:name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性必須在所有應用程序中都完全相同  
 --> 
 <forms loginUrl="http:localhost:81/Login.aspx" path="/" protection="All" defaultUrl="http:localhost:81/Default.aspx" timeout="40" name=".DeESoft"> 
 </forms> 
 </authentication> 
 <machineKey 
 validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
 decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
 validation="SHA1" /> 
 <authorization> 
 <deny users="?" /> 
 </authorization> 

 <authentication mode="Forms">
 <!--
  這里loginUrl是指向B項目的登錄頁面
  注意:name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性必須在所有應用程序中都完全相同
 -->
 <forms loginUrl="http:localhost:81/Login.aspx" path="/" protection="All" defaultUrl="http:localhost:81/Default.aspx" timeout="40" name=".DeESoft">
 </forms>
 </authentication>
 <machineKey
 validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
 decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
 validation="SHA1" />
 <authorization>
 <deny users="?" />
 </authorization>  再來設置B項目的web.configview plaincopy to clipboardprint?
 <authentication mode="Forms"> 
 <!--  
  注意:name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性必須在所有應用程序中都完全相同  
 --> 
 <forms loginUrl="~/Login.aspx" path="/" protection="All" defaultUrl="~/Default.aspx" timeout="40" name=".DeESoft"> 
 </forms> 
 </authentication> 
 <machineKey 
 validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
 decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
 validation="SHA1" /> 
 <authorization> 
 <deny users="?" /> 
 </authorization> 

 <authentication mode="Forms">
 <!--
  注意:name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性必須在所有應用程序中都完全相同
 -->
 <forms loginUrl="~/Login.aspx" path="/" protection="All" defaultUrl="~/Default.aspx" timeout="40" name=".DeESoft">
 </forms>
 </authentication>
 <machineKey
 validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
 decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
 validation="SHA1" />
 <authorization>
 <deny users="?" />
 </authorization>  完成并編譯后即可測試,可以訪問A項目的Default.aspx頁面,就會發現頁面已經被跳轉到B項目的登錄頁面中去了,當然也可以在A項目中也設置登錄驗證頁面,登錄后又跳回A項目,顯示當前“User.Identity.Name”的值,然后再在當前窗口訪問B項目的default.aspx,也可以看到同樣的結果,當其中一個項目注銷后,訪問兩個項目的Default.aspx都會跳轉到B項目的登錄頁面。
  關鍵部分說完了再來說說Session的問題。如果是常規的Session訪問操作辦法(非存入數據庫),AB兩個站點的Session是無法共享的,但能共享Forms 身份驗證信息,我們就可以根據這個Forms 身份驗證信息中的用戶名來新重新從數據庫中獲取需要存放到Session中的信息,然后存放到Session中供當前項目使用。
  基本流程如下:
  用戶在A網站登錄 -> A程序根據User.Identity.Name的值取得相關用戶表中的信息 -> 存放到Session["User"]中 -> 此時訪問B項目頁面 -> 程序判斷Session["User"]的值是否是Null -> 如果是Null -> B程序根據User.Identity.Name的值取得相關用戶表中的信息 -> 存放到Session["User"]中

  最后再對這個machineKey補充下,你要覺得想省事點直接把MSDN上的加密后key復制一份就行。如果想自己生成一組Key,那么下載我提供的這個工具(帶原代碼),運行文件在壓縮包中的Bin下面找

出處:http://blog.breakn.net/article.asp?id=440


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨竹工卡县| 灵山县| 比如县| 镇安县| 昭觉县| 方山县| 六枝特区| 全椒县| 宁夏| 土默特右旗| 通州区| 新巴尔虎右旗| 普定县| 自治县| 仪征市| 武夷山市| 新竹县| 神池县| 静宁县| 宁强县| 兖州市| 东城区| 海南省| 莫力| 通榆县| 通海县| 黄龙县| 深泽县| 博爱县| 揭西县| 隆昌县| 曲阳县| 临猗县| 西吉县| 沐川县| 神池县| 宝清县| 凤庆县| 泸定县| 德阳市| 临高县|