??xml version="1.0" encoding="utf-8" standalone="yes"?>电影一区二区三区久久免费观看 ,日本不卡1234视频,亚洲欧美日韩一区二区在线http://www.aygfsteel.com/yangyi/category/28799.html自强不息zh-cnSat, 26 Jun 2010 02:52:19 GMTSat, 26 Jun 2010 02:52:19 GMT60Spring Security 2 中动态角色权限的实现http://www.aygfsteel.com/yangyi/archive/2009/03/04/257764.html杨一杨一Wed, 04 Mar 2009 04:55:00 GMThttp://www.aygfsteel.com/yangyi/archive/2009/03/04/257764.htmlhttp://www.aygfsteel.com/yangyi/comments/257764.htmlhttp://www.aygfsteel.com/yangyi/archive/2009/03/04/257764.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/257764.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/257764.html安全框架的主体包括两部分即验权和授权?/span>Spring Security2可以很好的实现这两个q程?/span>Spring Security2对其前nacegi最大的改进是提供了自定义的配置标签Q通过Security的命名空间定义了http?/span>authentication-provider{标{,q样做的好处是极大地化了框架的配|,q很好地隐藏了框架实现的l节Q在配置的表qC也更清晰QM上提高了框架的易用性?/span>

然而,该框枉认的权限配置方式?/span>xml中,又因为新版本隐藏了实现细节,在动态权限的扩展上,能力变小了。在验权q程中,遇到的问题不多。但在授权时Q如果是acegiQh们可以通过l承AbstractFilterInvocationDefinitionSourcecd现在授权Q即资源角色和用戯色的匚wQ前Q针对资源的角色的获取。而新版本因ؓ用新标签q行了整合,q个q程被默认的cd现隐藏掉了,包括qo器,资源获取和角色定义等q程都由框架来实玎ͼ于是很多人在使用Spring Security2时也想通过改动DefaultFilterInvocationDefinitionSource对资源的获取来实现数据库或文件中的动态的角色。不q这L改动侵入性比较高Q而且q保留了acegi的痕q,也违背了开闭的原则?/span>

其实Q我们完全可以通过Spring Security2 accessManager提供的自定义投票机制来解册个问题,q样既不影响现有的基?/span>URL的配|,q可以加入自q动态的权限配置?/span>

         其实现策略如下:

1 定义c?/span>DynamicRoleVoter实现AccessDecisionVoterQ注入实现接?/span>DynamicRoleProviderQ用来定义获取角色的ҎQ的提供动态角色的c?/span>

2 在两?/span>supportsҎ中返?/span>true

3 ?/span>voteҎ中,有三个参?/span>(Authentication authentication, Object object,

ConfigAttributeDefinition config) 通过W一个获取用L权限集合Q第二个可以获取到资源对象,q而通过DynamicRoleProvider获取到角色集合进行匹配?/span>

4 在配|文件中加入DynamicRoleVoterQ如下:

<beans:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased">
<beans:property name="decisionVoters">
<beans:list>
<beans:bean class="org.springframework.security.vote.RoleVoter" />
<beans:bean class="org.springframework.security.vote.AuthenticatedVoter" />
<beans:bean class="DynamicRoleVoter">
    
<beans:property name="dynamicRoleProvider">
        
<beans:ref local="dynamicRoleProvider"/>
</beans:property>
</beans:bean>
</beans:list>
</beans:property>
</beans:bean>
<beans:bean id=” dynamicRoleProvider” class=”…”>
    
……
</beans:bean
>


杨一 2009-03-04 12:55 发表评论
]]>
pȝ模型及系l故障日志的思?/title><link>http://www.aygfsteel.com/yangyi/archive/2008/01/07/173344.html</link><dc:creator>杨一</dc:creator><author>杨一</author><pubDate>Mon, 07 Jan 2008 06:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangyi/archive/2008/01/07/173344.html</guid><wfw:comment>http://www.aygfsteel.com/yangyi/comments/173344.html</wfw:comment><comments>http://www.aygfsteel.com/yangyi/archive/2008/01/07/173344.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangyi/comments/commentRss/173344.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangyi/services/trackbacks/173344.html</trackback:ping><description><![CDATA[最q在研究关于pȝ的基于日志的故障恢复Q无意间在网上发C论文中对于pȝ日志模型的精彩论qͼ译q来q上我的思\Q?br /> ?br /> <font color="#0000ff">一个系l是一个具有明昄边界的实体,它根据一定的输入Q自w运行逻辑及系l的内部旉变化来生相应的输出?br /> 所?#8220;明显的边?#8221;是指pȝ所产生的输出是明确而无二义性的。我们称q个边界为系l的设计规范QspecificationQ。一个系l通过与其所处环境进行交互,从而获取输入ƈ产生输出。一个系l可以被拆解Z同的子系l。这些子pȝ通常被称为系l模块(system componentsQ,每个模块又独立地成ؓ一个系l,作ؓ一个系l,q个模块又会和它的相关环境进行交互(比如Q一个更大的pȝ中的其他的模块组Ӟ来获取输入ƈ产生输出Q这些模块还可以l箋被分解ؓ更小的子pȝ?br /> 一个系l可以被建模Z个状态机Qstate machineQ,其中的状态包含了pȝ所持有q处理的数据。这些状态的q移被分Z大类Q由pȝ内部逻辑所触发且对外部环境透明的迁Ud直接与外部环境相接触的迁UR前者的例子如内存数据和寄存器数据的转换Q内存中数据l构的重l。第二种q移的例子包含了各种各样的系l和环境之间的交互,一般来_如果q个q程能被建模成系l的I/O操作Q则应属于这一cd。因此,一个消息内容的形成是一个或多个W一cd状态迁Uȝl果Q但消息输出到pȝ的环境则是属于第二类q移?br /> W二cd的状态迁Ud以捕获交互事Ӟinteraction eventsQ,或者简单的事gQeventsQ。这些事件可以由pȝ外部的观察者(observerQ来获取。显Ӟq里的事件是消息、信受数据及其内容以及一切系l和其环境交互(如机器hq动手脚Q报警器报警Q打印机打印{等Q的发送和接受的模型。此外事件还可以用来描述pȝ~Z交互的时_比如一个计时器在日志中输出pȝ的空闲时间等?br /> 当一个大的系l被拆分成多个模块时Q每个模块都被赋予了整个pȝ所处理数据的一部分Q正因ؓ模块和模块间的接口衔接和数据感知Q一些原来属于第一cd的状态{换,因ؓpȝ的拆分在更低的层ơ上变成了第二类别,成ؓpȝ和环境之间的交互?br /> 对于一个特定的pȝQ他对于输入的Ş式和获取旉是不可预知的Q但是这个系l却应该能够做到Ҏ一个特定的输入以及pȝ当前的特定状态获取一个特定的输出。因此系l的执行可以被徏模ؓ状态{换序列,每个状态的输入是一个不定性事件。ؓ了记录日志ƈ做到故障恢复Q我们还应做到能够在环境中捕莯个不定性事件输入?br /> 此外Q在pȝ与系l间q行交互式,事g的传递时间也应该是不定性的?/font><br /> ?br /> <br /> 怎样用日志来预防pȝ崩溃Q在崩溃后如何还原系l,我想关键问题是怎么做好内存的快照,q样Q在断电重启后可以通过日志来还原内存的信息q样W一步就是确认内存中的数据结构,哪些是必不可的。确定系l恢复的_度Q按照子pȝ的分割和事g的记录来q行replayQ根据子pȝ的划分,可以扑և每个子系l中W二cd的事件进行记录?br /> 以向数据库系l提交作业ؓ例,实际上在整个作业提交的过E中Q每个层ơ都要做到可以在p|的情况下重现Q这个功能在完善的数据库pȝ和集批处理pȝ中当然已l很完善。但如果是针对webpȝ的作业提交,则需要针对Web的作业持久方案,做一个日志恢复处理。需要特别指出的是,对于数据的查询是不需要做备䆾的?br /> 在具体实CQ我惛_该包括:日志记录Q故障检,日志持久三个部分。一份日志就是一个对于系l检查点QcheckpointQ的q箋记录。日志记录者负责记录日志到日志持久者,故障器随时监控pȝQ发现故障后Q从日志持久者中d日志Q进行replay. <img src ="http://www.aygfsteel.com/yangyi/aggbug/173344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangyi/" target="_blank">杨一</a> 2008-01-07 14:44 <a href="http://www.aygfsteel.com/yangyi/archive/2008/01/07/173344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何实现包含插g功能的Applet Web界面http://www.aygfsteel.com/yangyi/archive/2008/01/02/172204.html杨一杨一Wed, 02 Jan 2008 07:07:00 GMThttp://www.aygfsteel.com/yangyi/archive/2008/01/02/172204.htmlhttp://www.aygfsteel.com/yangyi/comments/172204.htmlhttp://www.aygfsteel.com/yangyi/archive/2008/01/02/172204.html#Feedback4http://www.aygfsteel.com/yangyi/comments/commentRss/172204.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/172204.html不知怽有没有想q用Applet来组lWeb的程序界面?弟最q整理了一些杂的思\Q思想完全开放,Ƣ迎批评?br /> 先说一下可能遇到的问题Q?br /> 1 安全性:AppletҎ地资源的操作需要相应的安全许可Q?br /> 2 库资源的下蝲Q如何下载及理支持本地Applet的库资源Q?br /> 3 通信QApplet如何与后台的Servletq行通信Q?br /> 4 囑Ş的加载:如何利用Applet动态的实例化ƈ展现界面?/p>

下面一一展开讨论

Q一Q保障安全?/p>

安全性的主要解决Ҏ是利用Java提供的keytool生成一个keystoreQƈ利用q个keystore对jar包进行signjar的操作?br /> 整个对Java文g的编译,打包和signjarq程可以利用Ant来完成,比如下面的Ant脚本片段是用来处理signjar的,大家也可以通过相应的Java命o直接处理Q?/p>

< target  name ="signjar"  depends ="jar" >
 
< signjar  jar ="example.jar"
  keystore
="${basedir}/yangyi.keystore"  storepass ="mypassword"  alias ="mykey" ></ signjar >
</ target >

如果直接用命令,则其形式为:
jarsigner [ options ] jar-file alias
具体的操作方法可以参考下面的链接Q?br /> http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/jarsigner.html
通过q个signjar的操作,我们qq个包中的类q行了一ơ数字签名,q样Q当Appletq行默认许可之外的操作时Q窗口将弹出q个数字{֐要求本地用户q行认Q只有在认后,用户才可以l进行操作?/p>

q样我们可以在第一ơ用戯行AppletE序Ӟ在用L许可下动态地在用L$user.home/.java.policy下生成一个授权文Ӟ以后可以执行需要的操作了,Z证客L的安全性,仅赋予用h行特定文件夹权限的权利,如(仅作Z?可以Ҏ需要自己配|文件和Socket讉K权限Q:
grant codeBase "file:/home/yiyang/test/×" {
 java.security.AllPermission;
};

Q二Q下载ƈ理库支?/p>

q个q程可以通过Java的URLcL供的openConnectionҎ来获取一个InputStream从而获取到q程的资源(包括支持库和配置文g两部分)
1Q对于配|文Ӟ因ؓ其内定w比较,而且比较单,可以直接通过输入来获取Q这是没有异议的Q?br /> 2Q对于库文gQ在下蝲之前先到我们理的库的目录下扑ֈ版本索引文gQ我们设定一个版本烦引文件来理升Q,q个版本索引文g如下所C:

time={资源获取的时间戳}
lib1.jar=1.0
lib2.jar=1.1

其中Q服务器端也保留有一份这L版本文gQ当下蝲库文件时Q首先对客户端和服务端的库的L间戳q行比较Q如果客L大于或等于服务端Q则不需下蝲Q否则,如果客户端对应项目ؓI或者其ȝ旉戛_于服务端Q则q一步比较内部库文g的版本,发现版本低的库或在客L不存在的库后Q自动到服务器上q行下蝲Q在下蝲成功后,更新客户端的索引文g?/p>

Q三Q通信

q个问题弟曑֜以往的blog中有q详l的讨论Q可以到http://yangyi.blogjava.net中的相应随笔中找到答案。ȝ来说Q在cd协议q不复杂Q且客户端,服务端均为Java开发的情况下,应用Hessian是一个好的解x案,需要指出的是Hessian中的代码对客L来说q不是全部必ȝQ大家可以根据客L的用情况对q个库进行瘦w。只保留作ؓ客户端必要的cd可?/p>

Q四Q动态的实例化及插gl构

我们要实现用L面的集成Q从Ҏ上说要解决下面的几个问题Q?br /> 1Q菜单集?br /> 2Q支持库集成
3Q集成点
4Q输出变?br /> 对于客户端ؓApplet开发的插gQ我们把上面的四w|统一在XML文g中进行描q定义?br /> q里需要注意的是菜单要提供名称Q支持库要提供下载\径或者本地\径,集成Ҏ们希望是一个JPanel?br /> 在定义好XML后,可以到网址Q?a >http://www.flame-ware.com/xml2xsd/去获得一个对应的schemaQ利用这个schema和JAXB提供的xjc工具Q我们就可以生成对应的XML操作c,来对配置q行处理?br /> 对于菜单的集成可以动态地在JMenu中添加MenuItemQ表C插件的功能Q?br /> Ҏ配置的支持库的位|,我们可以通过Java的URLClassLoader对库q行动态的加蝲Q然后根据相应的集成点,获取实例Q这个过E的CZ代码如下所C:

File f  =   new  File( " a.jar " );  // a.jar是我们从配置文g中读取的支持?/span>
URL url  =   null ;
Class lib 
=   null ;
try   {
 url 
=  f.toURI().toURL();
 lib 
=  Class.forName( " Lib " true new  URLClassLoader(
   
new  URL[]  { url } ));  // Lib是我们从配置文g中读取的集成?/span>
 JPanel plugin_panel  =  (JPanel)lib.newInstance();
 
return  plugin_panel;
}
  catch  (Exception e)  {
 e.printStackTrace();
}

对于输出变量Q其主要作用是用户各个插件之间的信息交互Q我们可以通过一个ȝHashMap来实玎ͼ为避免变量值出现冲H,在变量名前自动加上插件名的前~?br /> 如plug_in1的变量var1Q其pȝ名称为:plug_in1__var1.

解决了上面的四个障碍Q我们就可以把精力投入到具体的功能实C了?/p>

杨一 2008-01-02 15:07 发表评论
]]>
利用JAAS及JNI实现在Java环境下的Unix/Linux权限认证http://www.aygfsteel.com/yangyi/archive/2007/12/12/167266.html杨一杨一Wed, 12 Dec 2007 08:50:00 GMThttp://www.aygfsteel.com/yangyi/archive/2007/12/12/167266.htmlhttp://www.aygfsteel.com/yangyi/comments/167266.htmlhttp://www.aygfsteel.com/yangyi/archive/2007/12/12/167266.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/167266.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/167266.html由标题我们不隄出,与本文相关的知识点主要有3个:
1 JAASq个解耦设计的多层验证ҎQ?.4后已归入Java核心库中Q?
2 应用JNI讉K底层代码Q及JNI中简单的cd匚w
3 在shadow模式下,Unix/Linuxpȝ的用户验?nbsp; 阅读全文

杨一 2007-12-12 16:50 发表评论
]]>
վ֩ģ壺 ƽ| | ˳| ǫ| ϻ| | | ׼| | | żҸ| | г| | ں| | ³ľ| | | ̺| | | ˳| | û| | | | | ګ| ľ| | | ٷ| | | | г| | Ž| |