ASP+学习笔记(五)
程序员文章站
2022-08-10 20:53:23
八、部署应用
vs7将一个project编译成一个dll文件,是一个ngws装配,一个装配可以用在一台机器上,放到
全局cache,供所有的应用访问...
八、部署应用
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.x" 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
cultureinfo.currentculture.name = "zh-cn";
cultureinfo.currentculture.englishname = "chinese(peoples *";
cultureinfo.currentculture.nativename = "中文(简体)(*)";
另外,类regioninfo还提供地域信息:
regioninfo.currentregion.nativename = "*";
regioninfo.currentregion.currencysymbol = "¥";
2).本地化asp+应用
3).使用资源文件
ngws基类支持,运行时有个类叫resourcemanager的实例可以使用。可以用resourcewriter或者实用
工具resgen.exe来生成资源文件,resgen以
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.x" 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
cultureinfo.currentculture.name = "zh-cn";
cultureinfo.currentculture.englishname = "chinese(peoples *";
cultureinfo.currentculture.nativename = "中文(简体)(*)";
另外,类regioninfo还提供地域信息:
regioninfo.currentregion.nativename = "*";
regioninfo.currentregion.currencysymbol = "¥";
2).本地化asp+应用
3).使用资源文件
ngws基类支持,运行时有个类叫resourcemanager的实例可以使用。可以用resourcewriter或者实用
工具resgen.exe来生成资源文件,resgen以