ASP+ 学习笔记 5

<a href='http://www.biancheng88.cn/html/2008-11/ASP-71919747.html'>ASP+ 学习笔记 5</a><br><br>
                  八、部署应用<br>
<br>
    VS7将一个project编译成一个DLL文件,是一个NGWS装配,一个装配可以用在一台机器上,放到<br>
全局Cache,供所有的应用访问,也可以放到某个应用的装配Cache中,只让一个应用访问。<br>
    <a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+允许动态地引用一个类,只需要提供其装配和类名,格式:<br>
    assemlyname#classname<br>
    <br>
九、安全<br>
    <br>
1).认证和授权<br>
    除了利用Windows提供的认证服务外,ASP+还提供了一种服务,使基于 FORM的认证很方便地实现。<br>
它是基于COOKIE工作的,所以客户浏览器必须支持COOKIE。需要注意的是,<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+的认证服务是从属于<br>
IIS的认证服务的。<br>
    <a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+提供两种类型的认证服务,一是基于文件的ACL的,另一种是基于URL的。基于URL的培植在<br>
配置文件中。<br>
    配置<security>节中的元素,可以有下面几种值:<br>
    none:没有认证<br>
    Windows:NT的用户/组<br>
    Cookie:将未认证的用户转向一个特定的登陆页面。最常用的一种方法。<br>
    Passport:必须安装PassPort服务。<br>
    <br>
    例:<br>
    <configuration><br>
        <security><br>
            <br>
        </security><br>
    </configuration><br>
    <br>
2).基于Windows的认证<br>
    当采用它时,一个WindowsPrincipal对象被附加到Request对象中。程序中可以判定当前用户是否<br>
某类角色,如:<br>
    if(User.IsInrole("Administrators"))<br>
    ......<br>
    还可以取得用户名,如:<br>
    User.Identity.Name;<br>
    User.Identity.Type;<br>
    <br>
3).基于FORM的认证<br>
    a).选cookie模式,禁止匿名访问:<br>
        <br>
        <br>
            <deny users="?"/><br>
        </authorization><br>
    b).配置登陆页,加密用的键,以及Cookie名字,在的子元素中:<br>
           <cookie decryptionkey="autogenerate" loginurl="login.aspx" cookie=".<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>XCOOKIESDEMO"/><br>
    注意,loginurl可以是远程机器,但decryptionkey则在两台机器上的必须相同。descryptionkey<br>
设成autogenerate则<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+自动选择。但如果一台机器上有多个应用,则最好指定。同时,不同的应用<br>
也该用不同的Cookie名字。因为同一台机器上的所有应用设置的Cookie都将被客户传回来,所以不能同名。<br>
    c).提供登陆页<br>
    d).验证完后(用你自己的验证机制,比如同数据库中的记录做比较),用下面一行:<br>
    CookieAuthentication.RedirectFromLoginPage(username,persistence)<br>
返回登陆页前一页。<br>
    这一句也设定了Cookie,从而让它之后的<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+认证服务认为用户已经经过了认证。<br>
    如果不想转向原来的页,而是出现特定的页,比如登陆用户可选菜单页,那必须使用另外的方法,<br>
可以用CookieAuthentication.SetAuthCookie设置好Cookie,用CookieAutentication.GetAuthCookie<br>
来获得Cookie.<br>
    另外,上面那行中的第二个参数是一个bool值,表示是否让Cookie永久保存,如果为false的话,<br>
则当用户关闭浏览器后,cookie就消失了。<br>
    用CookieAuthentication.SignOut可以清除Cookie,对应用户退出登陆。<br>
    除了以上的用程序自己实现认证过程外,也可以用配置文件来实现让ASP+帮你完成验证。在<br>
节中:<br>
    <credentials passwordformat="SHA1"><br>
        <user name="white" password="ASPFSSA98527357"><br>
    </credentials><br>
    然后程序调用CookieAuthenticationManager.Authenticate,提供用户名和口令作为参数,就可以<br>
由ASP+帮你判定用户是否合法了。<br>
    加密算法支持 Clear,SHA1,MD5。<br>
    <br>
4).认证拥护的角色<br>
   可以针对用户,也可以针对角色(组),如:<br>
   <br>
       <br>
       <br>
       <deny users="*"/><br>
       <br>
   多个用户名间用逗号","分割。<br>
   还可以细化请求方法:<br>
   <br>
   其中,*代表任何人,?代表匿名用户。<br>
   <br>
十、国际化,本地化应用<br>
<br>
    <a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+内部使用UNICODE,NGWS内部基类的String也是用UNICODE。可以支持某种特定的编码,实现转换。<br>
    场所属性可以通过CultureInfo类访问,其中,CurrentCulture是同场所有关的函数的缺省值,<br>
而CurrentUICulture是场所上的资源数据格式,例:<br>
    <%=CultureInfo.CurrentCulture.NativeName %><br>
    <%=CultureInfo.currentUICulture.NativeName %><br>
    一些与场所有关的类提供格式化输出,如:<br>
    <%=DateTime.Now.Format("f",null)%><br>
    <%=DateTime.Now.Format("f",new System.Globalization.CultureInfo("de"))%><br>
    <br>
    可以为某个目录进行配置,如:<br>
    <configuration><br>
        <globalization<br>
        fileencoding = "utf-8"<br>
        requestencoding = "utf-8"<br>
        responseencoding = "utf-8"<br>
        culture = "en-us"<br>
        uiculture = "de"<br>
        /><br>
    或者在Page指令中:<br>
    <%@ Page Culture ="fr" UICulture = "fr" ResponseEncoding = "utf-8" %><br>
    在页面内部还可以随时更改,使用 Thread.CurrentCulture修改,也就是说,同一个页面可以使用<br>
很多种编码输出。<br>
<br>
1).设置文化和编码<br>
    中文的Culture应设为:zh-cn<br>
    CultureInfo.CurrentCulture.Name = "zh-cn";<br>
    CultureInfo.CurrentCulture.EnglishName = "Chinese(Peoples' Republic of China";<br>
    CultureInfo.CurrentCulture.NativeName = "中文(简体)(中华人民共和国)";<br>
    另外,类RegionInfo还提供地域信息:<br>
    RegionInfo.CurrentRegion.NativeName = "中华人民共和国";<br>
    RegionInfo.CurrentRegion.CurrencySymbol = "¥";<br>
    <br>
2).本地化<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>+应用<br>
3).使用资源文件<br>
    NGWS基类支持,运行时有个类叫ResourceManager的实例可以使用。可以用ResourceWriter或者实用<br>
工具resgen.exe来生成资源文件,resgen以 key = value 的形式作为输入,如:<br>
    ;<br>
    ;注释<br>
    ;<br>
    [Strings]<br>
    greetings = 欢迎你!<br>
    more = 更多新闻<br>
    <br>
    资源文件的后缀为.resources。<br>
    <br>
    如何在页面中使用资源文件?<br>
    用户的Content-Language可以用Request.UserLanguages[0]来取得。<br>
    如何实现多语言支持?<br>
    a).准备资源文件,生成.resources文件,文件取名规则:中间带Culture名。例:articles.en-us.resources<br>
    b).global.asax中取得一个ResourceManager,并放如Application中供整个Application使用<br>
    c).global.asax中为Application_BeginRequest事件写代码,根据客户的情况决定当前的Culture.<br>
    d).在页面中用ResourceManager.GetString取得内容。<br>
    <br>
    例:<br>
    //global.asax中:<br>
    void Application_OnStart(){<br>
        Application["RM"]=new ResourceManager("articles",Server.Mappath("resources")<br>
+Enviroment.DirectorySeparatorChar,null);<br>
        }<br>
    void Application_BeginRequest(Object sender,EventArgs e){<br>
        try {<br>
            Thread.CurrentThread.CurrentCulture = new<br>
                CultureInfo(Request.UserLanguages[0]);<br>
        }catch(ArgumentException){<br>
            Thread.CurrentThread.CurrentCulture=new CultureInfo("en-us");<br>
            }<br>
        Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;<br>
        }<br>
        <br>
    //default.asax中:<br>
    ResourceManager rm;<br>
    void Page_Init(Object sender,EventArgs e){<br>
        rm=(ResouceManager)Application["RM"];<br>
        }<br>
        <br>
    //输出内容时:<br>
    <%= rm.GetString("greetings") %> <br>
 <br>

                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值