ASP学习笔记5


  八、部署应用
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
CultureInfo.CurrentCulture.Name = "zh-cn";
CultureInfo.CurrentCulture.EnglishName = "Chinese(Peoples' Republic of China";
CultureInfo.CurrentCulture.NativeName = "中文(简体)(中华人民共和国)";
另外,类RegionInfo还提供地域信息:
RegionInfo.CurrentRegion.NativeName = "中华人民共和国";
RegionInfo.CurrentRegion.CurrencySymbol = "¥";

2).本地化ASP+应用
3).使用资源文件
NGWS基类支持,运行时有个类叫ResourceManager的实例可以使用。可以用ResourceWriter或者实用
工具resgen.exe来生成资源文件,resgen以 key = value 的形式作为输入,如:
;
;注释
;
[Strings]
greetings = 欢迎你!
more = 更多新闻

资源文件的后缀为.resources。

如何在页面中使用资源文件?
用户的Content-Language可以用Request.UserLanguages[0]来取得。
如何实现多语言支持?
a).准备资源文件,生成.resources文件,文件取名规则:中间带Culture名。例:articles.en-us.resources
b).global.asax中取得一个ResourceManager,并放如Application中供整个Application使用
c).global.asax中为Application_BeginRequest事件写代码,根据客户的情况决定当前的Culture.
d).在页面中用ResourceManager.GetString取得内容。

例:
//global.asax中:
void Application_OnStart(){
Application["RM"]=new ResourceManager("articles",Server.Mappath("resources")
+Enviroment.DirectorySeparatorChar,null);
}
void Application_BeginRequest(Object sender,EventArgs e){
try {
Thread.CurrentThread.CurrentCulture = new
CultureInfo(Request.UserLanguages[0]);
}catch(ArgumentException){
Thread.CurrentThread.CurrentCulture=new CultureInfo("en-us");
}
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}

//default.asax中:
ResourceManager rm;
void Page_Init(Object sender,EventArgs e){
rm=(ResouceManager)Application["RM"];
}

//输出内容时:
<%= rm.GetString("greetings") %>


 

本文作者:



相关阅读:
一个友好的.改善的 Object.prototype.toString的实现
CSS教程:CSS属性behavior的语法
从一个MySQL的例子来学习查询语句
无废话C#设计模式之十二:Bridge
JS操作Cookie 大全
CERT? Advisory CA-2003-25 Buffer Overflow in Sendmail
如何在Linux下来查看OS系统块的大小
查询数据排名情况SQL
ASP代码实现自动清除替换ACCESS(MDB)数据库的日文字符的
Windows 2008远程桌面多用户登陆的配置方法
Ajax标签导航效果
MySQL 4.1.0 中文参考手册 译者序
js+CSS 图片等比缩小并垂直居中实现代码
Sql Server制作全局临时表
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 秋天的叶子作文50字 可爱的牵牛花_四年级作文200字 鸳鸯弦上奏相思。留住此情还梦笔,不分离。 寿安西渡奉别郑相公 大学生就业协会新学期工作计划 穿越的唐家三少作文1600字 三国足球1作文100字 枣儿红了 长颈鹿作文100字 倒霉的一天作文850字 敬爱父亲节 感恩祝福时 描写四季的好段大全 糖醋作文 小学二年级作文650字:霍老师,我服了您 期待。。 暴风雨前的小草作文600字 小学三年级作文300字:我的家乡真美 小学六年级平安夜作文范文 感谢老师作文300字 一场开心的游戏 绿叶的精神 形容坚持的句子 小学五年级作文200字:云 纪念抗战胜利70周年作文300字:壮丽史诗 营销专业毕业生个人实习报告 流星】 圣夏零度C演员表介绍 演员详细介绍 每年一信 童年琐忆作文800字 召唤小驯鹿 坐上小雪橇 五年级语文上半年工作总结 大学班级年度工作总结模板 时刻保持乐观作文300字 论高尚作文200字 职场人士获取成功的关键素质 爱别离作文800字 高考作文好词好句 离开时,你会恨我吗? 沂山之游 《我的奶奶》读后感350字 人事工作总结范文及计划 通讯稿范文三篇 在挫败中成长作文500字 最后一次为你写日志... 小学数学教学案例范文三篇 《种子》 爱吃糖的小猫 2013年教师节英文祝福语 精选版 激烈的争吵作文300字 qq心情说说心情不好的句子

Copyright © 2016 phpStudy |