`
k_lb
  • 浏览: 834058 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

Web开发框架中的架构模式比较(五)

 
阅读更多

用户身份确认Authentication 和授权Authorization

web用户访问web服务器上的受到保护的资源时,通常要经过两个步骤。(从.Net框架文档摘录)

1.用户身份确认Authentication

确保用户不是假冒的。应用程序获取用户的凭据(各种形式的标识,如用户名和密码)并通过某些授权机构验证那些凭据。如果这些凭据有效,则提交这些凭据的实体被视为经过身份验证的标识。

2.授权Authorization

通过对已验证身份授予或拒绝特定权限来限制访问权限。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

ASP.Netjava web框架的资源保护策略都遵循这样的模型:对应于被保护的资源,定义一组角色,用户,和允许的操作。操作在java web框架中称为http-method,在ASP.Net中称为Verb,都表示HTTP GETHTTP POSTHTTP方法。

根据servlet2.4规范,java web框架的网页的login form应该按照下例书写。注意,formaction属性的值应该为j_security_check

<form method=”POST” action=”j_security_check”>

<input type=”text” name=”j_username”>

<input type=”password” name=”j_password”>

</form>

ASP.Net的服务器端配置文件web.config例子。(节录)

下面的例子从.Net框架文档中摘录出来。

<authentication mode="forms">

<forms forms="401kApp"

loginurl="/login.aspx"

decryptionkey="1!#$$*13^">

<credentials passwordFormat=SHA1>

<user name="Kim" password="9611E4F94EC4972D5A537EA28C69F89AD28E5B36"/>

<user name="John" password="BA7157A99DFE9DD70A94D89844A4B4993B10168F"/>

</credentials>

</forms>

</authentication>

<authorization>
 <allow users="John" />
 <deny users="*" />
</authorization>

<authorization>
 <allow verb="GET" users="*" />
 <allow verb="POST" users="Kim" />
 <deny verb="POST" users="*" /> 
</authorization>

Java web 框架的服务器端配置文件web.xml例子。

下例从servlet2.4规范中摘录。其中的< security-role >< security-constraint >部分中定义了受保护资源对应的角色,用户,和允许的操作。

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://

java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version=”2.4”>

<display-name>A Secure Application</display-name>

<servlet>

<servlet-name>catalog</servlet-name>

<servlet-class>com.mycorp.CatalogServlet

</servlet-class>

<init-param>

<param-name>catalog</param-name>

<param-value>Spring</param-value>

</init-param>

<security-role-ref>

<role-name>MGR</role-name>

<!-- role name used in code -->

<role-link>manager</role-link>

</security-role-ref>

</servlet>

<security-role>

<role-name>manager</role-name>

</security-role>

<servlet-mapping>

<servlet-name>catalog</servlet-name>

<url-pattern>/catalog/*</url-pattern>

</servlet-mapping>

<security-constraint>

<web-resource-collection>

<web-resource-name>SalesInfo

</web-resource-name>

<url-pattern>/salesinfo/*</url-pattern>

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint>

<role-name>manager</role-name>

</auth-constraint>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL

</transport-guarantee>

</user-data-constraint>

</security-constraint>

</web-app>

SOAP Web Service

.Net框架和Apache Axis项目都提供了Web ServiceSOAP实现。采用的基本模式如下。

通过XML序列化实现SOAP XML数据到应用程序对象的绑定;XML序列化(和反序列化)发生在服务端和客户段;XML数据和应用程序对象Object的映射规则为,Object映射为一个XML元素,Object的“属性”(property)成员映射为该XML元素的子元素。

JavaC# 都支持Reflection机制,能够在运行时判断Object的类型。但有些细微的差别:Java对象的“属性”(property)并不是一种类型,而是一种符合getXXXsetXXX形式的约定;C#对象的“属性”(property)是在类内部声明的一种类型;还有,C#支持Attribute,比如,[SoapElement][XmlElement][WebMethod][SoapRpcMethod]等属性。所以,C#对象的XML序列化定义更加严格一些。

另外,两种语言的集合类也有差别,对于某些特殊的集合类,如hashtable,会有不兼容的情况,所以,最好发送数组类型,以保证不同语言开发的SOAP Web Service能够相互使用。

SOAP支持几种数组类型,其中有两种数组类型 —— 多维数组和复合数组,这里说明一下。多维数组是指如 3 * 4 之类的34列的整齐数组,C# 语言支持这种多维数组,java语言不支持这种多维数组;复合数组是指数组的数组,即数组的元素也可以是属组,C# 语言和java语言都支持这种复合数组。不过,复合数组也可以用来表示多维数组,比如复合数组的元素个数为3,元素类型为大小为4的数组,就可以用来表示3 * 4 之类的34列的整齐数组。

分享到:
评论

相关推荐

    基于J2EE多层架构的Web开发框架研究

    通过对J2EE多层架构的研究,本文提出了一种基于五层架构的Web开发框架,该框架在传统的四层架构基础上增加了数据持久层,并且集成了Hibernate等对象持久化技术,有效地解决了传统架构中的一些问题。此外,通过使用...

    伍华聪2.0Web开发框架

    在实际开发过程中,理解并熟练运用"伍华聪2.0Web开发框架"的各项功能,将有助于构建高效、稳定、易维护的Web应用。开发者可以根据项目需求,结合框架的API和最佳实践,进行定制化开发,充分发挥框架的优势。同时,...

    基于asp.net的web开发框架

    总之,基于ASP.NET的Web开发框架结合了三层架构和权限管理,为企业级Web应用提供了一个强大的基础。通过解压并研究这些文件,开发者可以深入理解框架的工作原理,并在此基础上快速开发出满足特定需求的业务功能。...

    架构探险—从零开始写Java Web框架

    这个过程将涵盖多个关键知识点,让我们逐步深入了解Java Web开发的核心技术,并了解如何将它们整合成一个高效、灵活的框架。 1. **Servlet基础**:Java Web框架的基础是Servlet,它是Java EE规范的一部分,用于处理...

    论文研究-基于J2EE多层架构的Web开发框架研究.pdf

    在经典的J2EE四层体系结构的基础上增加数据持久层,提出了基于J2EE五层体系结构的Web开发框架;分析了基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将Hibernate这个面向对象的轻量级...

    基于MVC框架的java web开发

    **基于MVC框架的Java Web开发** 在Java Web开发领域,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现业务...

    架构、框架、设计模式之间的关系.pdf

    例如,在Web开发中,Model-View-Controller (MVC) 是一种常见的架构模式,而Spring MVC、Struts等则是实现这种架构的具体框架。 - **区别**:框架更加具体和技术化,侧重于实现细节。相反,架构关注的是更为宏观的...

    架构探险 从零开始写javaweb框架书上源码

    书中的源码提供了实际的编程实践,使读者能够亲身体验到JavaWeb框架的实现过程,从而加深对Web开发原理的理解。 在描述中提到的“迅雷下载后是一个404HTML页面”,可能是指读者在尝试获取书中的源码时遇到了问题,...

    WEB开发-SSH三层框架

    在IT行业中,SSH(Struts2 + Spring + Hibernate)是一个非常经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。这个“WEB开发-SSH三层框架”项目涵盖了这三个核心组件,以及相关的数据库文件和工程...

    ASP.NET WebAPI+mvc4.0+EasyUI快速开发框架+通用权限管理系统源码

    1、基于ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout的架构设计开发 2、采用MVC的框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程化管理等优点 3、采用WebAPI,客户端完全摆脱了代理...

    JFinal框架在Java Web开发中的应用.pdf

    尽管如此,JFinal依然是Java Web开发领域中一个值得推荐的开发框架,特别是在追求快速开发和简单配置的项目中具有很大优势。 从文章中提供的内容来看,JFinal框架的确能够满足当前快速发展的技术和Web需求,且在...

    JavaWeb三层架构和五层架构介绍

    JavaWeb 三层架构和五层架构介绍 JavaWeb 开发中,程序的划分是基于“高内聚低...三层架构和五层架构是JavaWeb开发中常用的架构模式,每种架构都有其特点和优缺点,选择合适的架构模式可以提高开发效率和系统性能。

    Furion Web开发框架 v4.9.1.37.zip

    Furion Web开发框架是一款高效、现代化的.NET框架,专为快速构建Web应用程序而设计。在v4.9.1.37版本中,它提供了一系列优化和改进,旨在提升开发者的开发效率和应用程序的性能。这个压缩包包含了框架的核心库、示例...

    java Web开发流行架构

    Java Web开发领域中,Struts、Hibernate和Spring是三个非常重要的框架,它们组合起来形成了经典的“SSH”架构,被广泛应用于构建企业级Web应用程序。这个架构模式为开发者提供了强大的功能和灵活性,使得复杂的业务...

    后台管理(微服务模式框架)+ pcWeb(vue) + appWeb(vue)

    这种架构模式有利于提升系统的可伸缩性、可维护性和可部署性。因此,后端API采用了微服务设计,意味着各个功能模块被拆分成独立的服务,降低了系统复杂度,便于团队协作和独立部署。 “pcWeb(vue)”指的是用于PC端...

    基于MVC设计模式的WEB应用框架研究

    MVC(Model-View-Controller)设计模式是软件工程中一种广泛应用于Web应用开发的架构模式,尤其在J2EE环境中,它有效地分离了应用程序的不同部分,提高了代码的可维护性和可扩展性。MVC模式的核心思想是将应用分为三...

    基于.NetCore开发WebApi,WebApi框架

    基于.NetCore3.1搭建webapi框架。涉及知识有: 1.swagger API接口文档生成 2.多层(包含接口调用方式)高性能数据处理结构 3.数据仓储模式的实现 4.JWT token身份授权验证 5.appsetting.json文件集成读取配置

Global site tag (gtag.js) - Google Analytics