asp+|筆記 八、部署應用
VS7將一個project編譯成一個DLL檔案,是一個NGWS裝配,一個裝配可以用在一台機器上,放到
全域Cache,供所有的應用訪問,也可以放到某個應用的裝配Cache中,只讓一個應用訪問。
ASP+允許動態地引用一個類,只需要提供其裝配和類名,格式:
assemlyname#classname
九、安全
1).認證和授權
除了利用Windows提供的認證服務外,ASP+還提供了一種服務,使基於 FORM的認證很方便地實現。
它是基於COOKIE工作的,所以客戶瀏覽器必須支援COOKIE。需要注意的是,ASP+的認證服務是從屬於
IIS的認證服務的。
ASP+提供兩種類型的認證服務,一是基於檔案的ACL的,另一種是基於URL的。基於URL的培植在
設定檔中。
配置<security>節中的<authentication>元素,可以有下面幾種值:
none:沒有認證
Windows:NT的使用者/組
Cookie:將未認證的使用者轉向一個特定的登陸頁面。最常用的一種方法。
Passport:必須安裝PassPort服務。
例:
<configuration>
<security>
<authentication mode="Cookie"/>
</security>
</configuration>
2).基於Windows的認證
當採用它時,一個WindowsPrincipal對象被附加到Request對象中。程式中可以判定目前使用者是否
某類角色,如:
if(User.IsInrole("Administrators"))
......
還可以取得使用者名稱,如:
User.Identity.Name;
User.Identity.Type;
3).基於FORM的認證
a).選cookie模式,禁止匿名訪問:
<authentication mode="Cookie"/>
<authorization>
<deny users="?"/>
</authorization>
b).配置登陸頁,加密用的鍵,以及Cookie名字,在<authentication>的子項目中:
<cookie decryptionkey="autogenerate" loginurl="login.aspx" cookie=".ASPXCOOKIESDEMO"/>
注意,loginurl可以是遠程機器,但decryptionkey則在兩台機器上的必須相同。descryptionkey
設成autogenerate則ASP+自動選擇。但如果一台機器上有多個應用,則最好指定。同時,不同的應用
也該用不同的Cookie名字。因為同一台機器上的所有應用設定的Cookie都將被客戶傳回來,所以不能同名。
c).提供登陸頁
d).驗證完後(用你自己的驗證機制,比如同資料庫中的記錄做比較),用下面一行:
CookieAuthentication.RedirectFromLoginPage(username,persistence)
返回登陸頁前一頁。
這一句也設定了Cookie,從而讓它之後的ASP+認證服務認為使用者已經經過了認證。
如果不想轉向原來的頁,而是出現特定的頁,比如登陸使用者可選菜單頁,那必須使用另外的方法,
可以用CookieAuthentication.SetAuthCookie設定好Cookie,用CookieAutentication.GetAuthCookie
來獲得Cookie.
另外,上面那行中的第二個參數是一個bool值,表示是否讓Cookie永久儲存,如果為false的話,
則當使用者關閉瀏覽器後,cookie就消失了。
用CookieAuthentication.SignOut可以清除Cookie,對應使用者退出登陸。
除了以上的用程式自己實現認證過程外,也可以用設定檔來實現讓ASP+幫你完成驗證。在
<authentication>節中:
<credentials passwordformat="SHA1">
<user name="white" password="ASPFSSA98527357">
</credentials>
然後程式調用CookieAuthenticationManager.Authenticate,提供使用者名稱和口令作為參數,就可以
由ASP+幫你判定使用者是否合法了。
密碼編譯演算法支援 Clear,SHA1,MD5。
4).認證擁護的角色
可以針對使用者,也可以針對角色(組),如:
<authorization>
<allow users="towhite@263.net"/>
<allow roles="Admins"/>
<deny users="*"/>
多個使用者名稱間用逗號","分割。
還可以細化要求方法:
<allow verb="post" users="white,saillor"/>
其中,*代表任何人,?代表匿名使用者。
十、國際化,本地化應用
ASP+內部使用UNICODE,NGWS內部基類的String也是用UNICODE。可以支援某種特定的編碼,實現轉換。
場所屬性可以通過CultureInfo類訪問,其中,CurrentCulture是同場所有關的函數的預設值,
而CurrentUICulture是場所上的資源資料格式,例:
<%=CultureInfo.CurrentCulture.NativeName %>
<%=CultureInfo.currentUICulture.NativeName %>
一些與場所有關的類提供格式化輸出,如:
<%=DateTime.Now.Format("f",null)%>
<%=DateTime.Now.Format("f",new System.Globalization.CultureInfo("de"))%>
可以為某個目錄進行配置,如:
<configuration>
<globalization
fileencoding = "utf-8"
requestencoding = "utf-8"
responseencoding = "utf-8"
culture = "en-us"
uiculture = "de"
/>
或者在Page指令中:
<%@ Page Culture ="fr" UICulture = "fr" ResponseEncoding = "utf-8" %>
在頁面內部還可以隨時更改,使用 Thread.CurrentCulture修改,也就是說,同一個頁面可以使用
很多種編碼輸出。
1).設定文化和編碼
中文的Culture應設為:zh-cn
[1] [2] 下一頁