仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 608|回复: 14
打印 上一主题 下一主题

[学习教程] 发布一篇静态Proxy与Java ACL用户会见把持机制完成

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:25:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
用户会见把持(Accesscontrol)机制老是环绕粗粒度和细粒度两个方面来会商:
粗粒度把持:能够划定会见全部对象或对象群的某个层,而细粒度把持则老是在办法或属性层举行把持,好比:
同意一个文件为只读是属于粗粒度把持,而同意对这个文件某行有写操纵则属于细粒度把持。
一个好的用户把持机制固然既同意粗粒度也同意细粒度把持,在Jive中我们看到是利用Proxy来到达这个目标,可是我们也发明,因为必要对每一个类都要举行细粒度把持,以是一定对每一个类都要做一个Proxy类,如许带来了良多Proxy类,如ForumProxyForumThreadProxyForumFactoryProxy等,有形增添了体系庞大性。
利用静态Proxy能够很好的办理这个成绩。再分离java.security.acl的ACL机制,我们就能够天真地完成粗粒度和细粒度的两重把持。
当一个用户login后,我们就要在内存中为其创建响应的受权会见机制,利用java.security.acl能够很便利的创建如许一个平安体系。
起首任何一个对象都应当有个基础属性:具有者或具有者所属组(Windows中每一个目次平安形貌符都由4部分组成:对象的创立者、对象所属的组、自在存取把持和体系存取把持)。
1.Javaacl入手下手第一步是创建一个主体Principal,个中SecurityOwner是主体的具有者:privatestaticfinalPrincipal_securityOwner=newPrincipalImpl("SecurityOwner");
2.当用户login出去时,他带有两个基础数据:会见暗码和他要会见的对象ApplicationName。起首考证用户名和暗码,然后从数据库中掏出其权限数据,创建Permission,这里利用Feature承继了Permission,在Feature中界说了有关权限的细节数据(如读写删)。
//掏出用户和被会见对象之间的权限干系,这类权限干系大概不但一个,也就是说,用户
//大概对被会见对象具有读写删等多个权限,将其打包在Hasbtable中。
Hashtablefeatures=loadFeaturesForUser(sApplicationName,sUserID);
3.创立一个用户对象
Useruser=newUserImpl(sUserID,newHashtable());
4.为这个用户创立一个举动的aclentry
addAclEntry(user,features);
个中最关头的是第四步addAclEntry,我们看看其怎样完成的:
//为这个用户创立一个新的Aclentry
AclEntrynewAclEntry=newAclEntryImpl(user);
  //遍历Hashtablefeatures,将个中多种权限到场:
....
feature=(Feature)hFeatures.get(keyName);
newAclEntry.addPermission(feature);
....
最初也要到场主体具有者SecurityOwner
如许一个平安系统就已创建完成。
当你在体系中要查验某个用户利用具有某个权限,如读的权力时,只需
acl.checkPermission(user,feature)就能够,acl是ACL的一个实例,如许权限反省就交给
java.security.acl.ACL去向理了。
<p>
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
再现理想 该用户已被删除
沙发
发表于 2015-1-21 05:56:09 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-28 23:48:16 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
柔情似水 该用户已被删除
地板
发表于 2015-1-29 23:11:12 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
老尸 该用户已被删除
5#
发表于 2015-1-30 16:32:31 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
飘灵儿 该用户已被删除
6#
发表于 2015-1-30 22:15:35 | 只看该作者
是一种使用者不需花费很多时间学习的语言
谁可相欹 该用户已被删除
7#
发表于 2015-1-31 14:34:56 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
因胸联盟 该用户已被删除
8#
发表于 2015-2-2 12:40:58 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
深爱那片海 该用户已被删除
9#
发表于 2015-2-7 19:31:10 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
分手快乐 该用户已被删除
10#
发表于 2015-2-9 16:58:23 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
只想知道 该用户已被删除
11#
 楼主| 发表于 2015-2-27 06:25:54 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
蒙在股里 该用户已被删除
12#
发表于 2015-2-28 08:27:52 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
不帅 该用户已被删除
13#
发表于 2015-3-2 01:04:12 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
灵魂腐蚀 该用户已被删除
14#
发表于 2015-3-11 01:28:37 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
莫相离 该用户已被删除
15#
发表于 2015-3-24 15:50:43 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 19:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表