基于Cocoon的应用(二)及系统权限探讨

原创 2004年06月28日 13:40:00

本文为作者为jas,欢迎转载,但请注明文章出处~^_^~

作者介绍:林霖(jas)  2004年毕业于一所备受改名之苦的普通本科院校。此人狂爱开源技术。

1.   为什么要进行权限控制

   在网络通信极其发达的现代社会,人类的活动越来越依赖网络,人们不断的把以前只能现实中完成的人类活动搬到网络上。人们可以在通过网络自由的进行商业活动、娱乐、通信交流等。涉及到的商业利益,个人利益越来越大,于是就产生了很多网络安全的问题。

如何在网络上保证自己的信息不被其他人盗窃也就的越来越引人注目。

2.   如何保护自己

自然界的生物在对其他物体进行攻击或逃跑之前会先对对方进行的身份和新闻的判断。狗在攻击之前,肯定是先嗅嗅你,判断你是否是陌生人。这是对你身份进行认证。如果你是主人,他当然不会攻击你,但如果你是陌生人,就会得到他不同对待。而如果也对它进行攻击的话它可能会逃跑,这也是它对你的行为的判断的结果。

   同样我们可以把这种行为引入到网络中。要保护自己,就要先对要求对你产生行为的事物进行身份认证。而在我们如何来做到这点呢,有很多方法。你可以给使用你的资源的人或事物分配只有你能辨别的唯一标识符。但是一旦你的资源被放置到网络上,那么所有都可以通过网络来尝试使用它们,那些人可能是你分配了标识符的人,也可能是一个完全陌生的人。所以你就要在他们一连接到你的应用就给他们每个人分配唯一的标识。这就产生的session会话。每个用户一旦跟应用连接,我们就跟每个人建立唯一不同的会话。于是我们就可以通过session来取得用户的信息并辨认他的身份。

   于是剩下的问题就是如何利用好session来保护你的应用,如何使它发挥最大的功效。

   现在我们来看看几种使用方法。同时你会看到我是如何保护我的应用的。

3.   利用Session保护你的资源和创建灵活的权限控制机制

1.    第一种就是我们最常用的。每当有人要使用你要保护的资源时,你都手工的判断你的session里的用户是否具有此权限。看看下面伪代码,我们保护资源的一般流程。

                

If (Session.getUserName()&Session.hasRight() )

      {

 

           我的保护资源;

 

}

else

{

你无权访问我的资源;

}

你可以发现在每次有请求要使用你的保护资源是,你都要手工的判断一次是否有使用权限。

于是我们思考:为什么不创建一个框架让系统自动的来判断这些资源,而我们要做的就是指出我们要保护的资源,其他的让我们的框架来忙就行了。于是就产生了认证框架。而在cocoon里我们可以很容易的作到。

2.    Cocoon authentication framework .这就是我们要研究的session的第二种方法。但是先让我们跳过,后面会详细的介绍如何使用这个框架。

3.    上面我们让framework来做一些重复性的工作,下一步我们研究一个重点就是,如何能给我的系统实现一个灵活的权限控制机制。

我们可以想象当一个系统很庞大的时候,有很多模块,我们如果每个模块的有自己的控制体系或者控制方法的话,那将是非常混乱的事情。那为什么我们不统一控制起来呢?于是我想到了一种可以灵活处理解决的方法。那就是给所有模块的功能统一编号。然后跟给定的用户的、用户组、或角色映射起来。用户要去使用某个功能,某个模块,就要先查看这个映射。看是否有使用权限。比如:

n       系统将划分不同的使用用户每类用户属于某一个角色一共有3种角色guest,poweruser,admin

所以有一个角色表roles.它的结构如下:

角色表roles:

1.    角色id:(r_id

2.    角色名字:(r_name)

3.    描述:(r_des

具体表结构如下:

n       系统将系统将给不同的功能给定id,然后给每个功能给定不同的权限,最后将功能和功能的操作权限映射(map)到角色。而用户由于属于某一类用户而具有某一功能的的特定权限。

例:我们有一个功能是给admin留悄悄话。这个功能的我们给定功能id301,其中3代表某一个大的模块功能,这里为留言,01则为具体的写悄悄话的权限,以此类推,302为在留言模块里删除悄悄话或其他一些操作。

   于是我们可以将这个功能映射不同的角色,如果功能对应角色映射如下的话:

301——poweruser——yes

那么我们就认为该属于poweruser的用户可以有使用给主人留悄悄话的权限。

如果对应角色映射如下的话:

301——poweruser——no

那么我们认为属于角色poweruser的用户将不能给主人留悄悄话。

 

n       而相对于每一个用户我们将他归到一个角色上去。没个用户只能属于一个角色.

 

 

这样带来的统一管理的好处是非常明显的,另外一个巨大的好处就可以把我们可以非常方便的改变自己的功能模块的使用权限到用户的映射。

基于Cocoon的应用(二)及系统权限探讨

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 06:05
  • 92

基于Cocoon的应用(一)

把一个月前翻译的一篇拿来当开头,以后有时间慢慢补齐   1.     从xml被吹的天花乱坠说起 有那么一段时间,每个人都在谈论xml,所有的应用服务器支持xml,所有的B2B应用加入xml , we...
  • youlin
  • youlin
  • 2004年06月28日 13:20
  • 1197

Cocoon入门

1、Cocoon介绍    根据Apache官方定义,Cocoon是一项XML发布框架。它允许你定义XML文档和文档的转换,并最终生成你所选择的表示形式,例如HTML, PDF, SVG, VRML等...
  • camel20
  • camel20
  • 2005年04月04日 11:17
  • 3414

OO真经——关于面向对象的哲学体系及科学体系的探讨(下)

接上一篇:OO真经——关于面向对象的哲学体系及科学体系的探讨(上) 真经第六章——运作 Moving       “运动是绝对的——牛顿” 6.1、导言       在前五章中,我们从世界观的这话...
  • Percy__Lee
  • Percy__Lee
  • 2015年08月26日 16:33
  • 596

《Apache Cocoon2.2 学习》第一章:初识cocoon

Apache Cocoon2.2
  • gambler90
  • gambler90
  • 2016年05月08日 20:05
  • 749

使用Java技术在Cocoon中实现商业逻辑

来源:http://www.linuxforum.net/forum/printthread.php?Cat=&Board=java&main=387301&type=post如果你对Apache C...
  • wuyou
  • wuyou
  • 2004年11月20日 09:25
  • 1436

C++ - 函数的参数传递方式和返回值

一、参数传递方式 1、普通参数 int AbOne(int a, int b) { return a+b; } 2、引用参数 int AbTwo(int &a, int &b) ...
  • linycobie
  • linycobie
  • 2012年03月07日 19:59
  • 240

面向对象与哲学

面向对象与哲学1 面向对象与语言无关初学者往往喜欢选择一门声称强力支持面向对象的语言。在这些面向对象的语言的布道者和拥趸者看来,是否面向对象成为唯一的标准。面向对象超过了面向对象本身之后,就变成了一种...
  • cheungmine
  • cheungmine
  • 2011年11月18日 13:21
  • 2276

[笔记]OO真经——关于面向对象的哲学体系及科学体系的探讨

原文链接:http://kb.cnblogs.com/page/45954/3/ 二、中 》》程序世界与现实世界第一点区别:现实世界的依赖以对象为单位,程序世界的依赖以类为单位。 》》程序世界里...
  • Alvin604497732
  • Alvin604497732
  • 2015年10月24日 17:59
  • 381

建立基于eTOM和ITIL的运维流程管理体系探讨

流程重组和信息化建设是当今企业的重头戏,企业在进行流程重组和信息系统建设的时候,行业标准具有重要的指导意义。eTOM是电信管理论坛制定的针对电信行业的业务过程框架,是对电信企业经营管理活动的抽...
  • huangwei1001
  • huangwei1001
  • 2010年06月25日 16:13
  • 939
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于Cocoon的应用(二)及系统权限探讨
举报原因:
原因补充:

(最多只允许输入30个字)