您的位置:首页技术开发ASP教程 → ASP+学习笔记(五)

ASP+学习笔记(五)

时间:2004/11/7 4:13:00来源:本站整理作者:蓝点我要评论(0)

八、部署应用



    VS7将一个project编译成一个DLL文件,是一个NGWS装配,一个装配可以用在一台机器上,放到

全局Cache,供所有的应用访问,也可以放到某个应用的装配Cache中,只让一个应用访问。

    ASP+允许动态地引用一个类,只需要提供其装配和类名,格式:

    assemlyname#classname

    

九、安全

    

1).认证和授权

    除了利用Windows提供的认证服务外,ASP+还提供了一种服务,使基于 FORM的认证很方便地实现。

它是基于COOKIE工作的,所以客户浏览器必须支持COOKIE。需要注意的是,ASP+的认证服务是从属于

IIS的认证服务的。

    ASP+提供两种类型的认证服务,一是基于文件的ACL的,另一种是基于URL的。基于URL的培植在

配置文件中。

    配置

节中的元素,可以有下面几种值:

    none:没有认证

    Windows:NT的用户/组

    Cookie:将未认证的用户转向一个特定的登陆页面。最常用的一种方法。

    Passport:必须安装PassPort服务。

    

    例:

    

        

            

        

    

    

2).基于Windows的认证

    当采用它时,一个WindowsPrincipal对象被附加到Request对象中。程序中可以判定当前用户是否

某类角色,如:

    if(User.IsInrole("Administrators"))

    ......

    还可以取得用户名,如:

    User.Identity.Name;

    User.Identity.Type;

    

3).基于FORM的认证

    a).选cookie模式,禁止匿名访问:

        

        

            

        

    b).配置登陆页,加密用的键,以及Cookie名字,在的子元素中:

           

    注意,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+帮你完成验证。在

节中:

    

        

    

    然后程序调用CookieAuthenticationManager.Authenticate,提供用户名和口令作为参数,就可以

由ASP+帮你判定用户是否合法了。

    加密算法支持 Clear,SHA1,MD5。

    

4).认证拥护的角色

   可以针对用户,也可以针对角色(组),如:

   

       

       

       

       

   多个用户名间用逗号","分割。

   还可以细化请求方法:

   

   其中,*代表任何人,?代表匿名用户。

   

十、国际化,本地化应用



    ASP+内部使用UNICODE,NGWS内部基类的String也是用UNICODE。可以支持某种特定的编码,实现转换。

    场所属性可以通过CultureInfo类访问,其中,CurrentCulture是同场所有关的函数的缺省值,

而CurrentUICulture是场所上的资源数据格式,例:

    <%=cultureinfo.currentculture.nativename>

    <%=cultureinfo.currentuiculture.nativename>

    一些与场所有关的类提供格式化输出,如:

    <%=datetime.now.format("f",null)%>

    <%=datetime.now.format("f",new>

    

    可以为某个目录进行配置,如:

    

        <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"];

        }

        

    //输出内容时:

    <%=>




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 《龙珠:超宇宙》 战斗E3 2014:瘆人僵尸《消 asp代码实现access数据导出到excel文件如何使用FSO读取Js文件内容并可以编辑修改对初学者有用的一些asp函数集学习ASP编程必会的代码

人气排行 asp代码实现access数据导出到excel文件asp不需要任何配置的伪静态实现如何使用FSO读取Js文件内容并可以编辑修改asp去除html标记和空格的代码Asp全选删除代码教大家网页伪静态知识及其2种实现方法Microsoft SQL Server 7.0安装问题(一)ASP.NET中的Code Behind技术4