广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP+学习笔记(五)

    2018-04-13 09:17:19 次阅读 稿源:互联网
    零七广告
    八、部署应用
      
          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") %>
      
     

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告