ONJava.com -- Web 服务实现中的概念分离 --> page 3

1, 2, 3, 4

 

Acegi 安全配置

现在我们来讨论如何在 Spring 配置文件中配置 Acegi 安全性。 如上文所述,我们已经配置了业务逻辑 Bean,使其方法调用被 securityInterceptor Bean 拦截以执行安全性检查。 让我们来看看这个 Bean 是如何配置的。 下面展示了 securityInterceptor Bean 的 Spring 配置文件片段。 securityInterceptor Bean 是由一个称为 securityInterceptor 的 Acegi 类提供的。 正如其名字的含意一样,该类用于加强方法调用的安全性(方法是拦截方法调用,检查调用者是否被授权)。

<beans>  . . .  <bean id="securityInterceptor"    class="org.acegisecurity.intercept.method.      aopalliance.MethodSecurityInterceptor">    <property name="authenticationManager">      <bean class="org.acegisecurity.        providers.ProviderManager">        <property name="providers">          <list>            <bean              class="org.acegisecurity.                providers.anonymous.                AnonymousAuthenticationProvider">              <property                name="key"                value="changeThis"/>            </bean>          </list>        </property>      </bean>    </property>    <property name="accessDecisionManager">      <bean        class="org.acegisecurity.vote.          UnanimousBased">        <property name="decisionVoters">          <list>            <bean              class="org.acegisecurity.                vote.RoleVoter"/>          </list>        </property>      </bean>    </property>    <property      name="objectDefinitionSource">      <value>        com.mybank.bizlogic.AccountMgr.          transferFunds=ROLE_MANAGER      </value>    </property>  </bean>  . . .</beans>

我们需要使用 authenticationManager 属性来配置 securityInterceptor Bean 以指示使用哪种授权方式。 由于设计上依靠 Axis 事务处理程序执行授权,我们在此处不需要进行授权,只需使用 AnonymousAuthenticationProvider 进行配置。 另外,在 Axis 事务处理程序中创建授权标识的方式,将会使 Acegi 知道已经进行了授权,因此不会再次授权。 我们将在讨论 Axis 事务处理程序的时候详加讨论。

接下来,需要使用 accessDecisionManager 属性配置该 Bean 以指定它如何决定某人是否有对方法调用进行访问的权限。 Acegi 有三个具体的访问决定管理器实现:AffirmativeBasedConsensusBasedUnanimousBased。 Acegi 作出访问决定的方式是:依靠投票者投票,决定是否授予某人访问权限来执行具体操作。 它通过计算票数来决定是否授予访问权限。 我们选择了 UnanimousBased 访问决定管理器,该管理器要求所有投票者通过投票来授予客户端执行特定操作的权限。 阅读 Acegi 文档可以深入了解其工作原理。 接下来,我们要使用一个投票者名单来配置 accessDecisionManager。 本示例中,只有一个投票者,称为 RoleVoter。 它是 Acegi 的一个类,根据基于角色的访问控制,该类对授予权限与否进行投票。 同样,阅读 Acegi 文档可以深入了解 RoleVoter 如何工作。

最后一个需要配置的属性是 objectDefinitionSource。 这是授予权限的方式,即,对于各种受到安全保护的对象,对象上的方法调用需要授予何种访问权限。 此处,只需要保证 transferFunds() 方法的安全,并且只将权限授予 Manager 角色。 为达到此目的,我们需要列出类的全限定名称和方法的名称以及访问该方法的角色:

com.mybank.bizlogic.AccountMgr.transferFunds=  ROLE_MANAGER

1, 2, 3, 4

下一页箭头



下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
源码来自:https://pan.quark.cn/s/a4b39357ea24 在VC++开发过程中,对话框(CDialog)作为典型的用户界面组件,承担着与用户进行信息交互的重要角色。 在VS2008SP1的开发环境中,常常需要满足为对话框配置个性化背景图片的需求,以此来优化用户的操作体验。 本案例将系统性地阐述在CDialog框架下如何达成这一功能。 首先,需要在资源设计工具中构建一个新的对话框资源。 具体操作是在Visual Studio平台中,进入资源视图(Resource View)界面,定位到对话框(Dialog)分支,通过右键选择“插入对话框”(Insert Dialog)选项。 完成对话框内控件的布局设计后,对对话框资源进行保存。 随后,将着手进行背景图片的载入工作。 通常有两种主要的技术路径:1. **运用位图控件(CStatic)**:在对话框界面中嵌入一个CStatic控件,并将其属性设置为BST_OWNERDRAW,从而具备自主控制绘制过程的权限。 在对话框的类定义中,需要重写OnPaint()函数,负责调用图片资源并借助CDC对象将其渲染到对话框表面。 此外,必须合理处理WM_CTLCOLORSTATIC消息,确保背景图片的展示不会受到其他界面元素的干扰。 ```cppvoid CMyDialog::OnPaint(){ CPaintDC dc(this); // 生成设备上下文对象 CBitmap bitmap; bitmap.LoadBitmap(IDC_BITMAP_BACKGROUND); // 获取背景图片资源 CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = m...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值