⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 afterinvocationmanager.java

📁 acegi构造安全的java系统
💻 JAVA
字号:
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.acegisecurity;/** * Reviews the <code>Object</code> returned from a secure object invocation, * being able to modify the <code>Object</code> or throw an {@link * AccessDeniedException}. * * <p> * Typically used to ensure the principal is permitted to access the domain * object instance returned by a service layer bean. Can also be used to * mutate the domain object instance so the principal is only able to access * authorised bean properties or <code>Collection</code> elements. Often used * in conjunction with an {@link org.acegisecurity.acl.AclManager} to * obtain the access control list applicable for the domain object instance. * </p> * * <p> * Special consideration should be given to using an * <code>AfterInvocationManager</code> on bean methods that modify a database. * Typically an <code>AfterInvocationManager</code> is used with read-only * methods, such as <code>public DomainObject getById(id)</code>. If used with * methods that modify a database, a transaction manager should be used to * ensure any <code>AccessDeniedException</code> will cause a rollback of the * changes made by the transaction. * </p> * * @author Ben Alex * @version $Id: AfterInvocationManager.java 1784 2007-02-24 21:00:24Z luke_t $ */public interface AfterInvocationManager {    //~ Methods ========================================================================================================    /**     * Given the details of a secure object invocation including its returned <code>Object</code>, make an     * access control decision or optionally modify the returned <code>Object</code>.     *     * @param authentication the caller that invoked the method     * @param object the secured object that was called     * @param config the configuration attributes associated with the secured object that was invoked     * @param returnedObject the <code>Object</code> that was returned from the secure object invocation     *     * @return the <code>Object</code> that will ultimately be returned to the caller (if an implementation does not     *         wish to modify the object to be returned to the caller, the implementation should simply return the     *         same object it was passed by the <code>returnedObject</code> method argument)     *     * @throws AccessDeniedException if access is denied     */    Object decide(Authentication authentication, Object object, ConfigAttributeDefinition config,        Object returnedObject) throws AccessDeniedException;    /**     * Indicates whether this <code>AfterInvocationManager</code> is able to process "after invocation"     * requests presented with the passed <code>ConfigAttribute</code>.<p>This allows the     * <code>AbstractSecurityInterceptor</code> to check every configuration attribute can be consumed by the     * configured <code>AccessDecisionManager</code> and/or <code>RunAsManager</code> and/or     * <code>AfterInvocationManager</code>.</p>     *     * @param attribute a configuration attribute that has been configured against the     *        <code>AbstractSecurityInterceptor</code>     *     * @return true if this <code>AfterInvocationManager</code> can support the passed configuration attribute     */    boolean supports(ConfigAttribute attribute);    /**     * Indicates whether the <code>AfterInvocationManager</code> implementation is able to provide access     * control decisions for the indicated secured object type.     *     * @param clazz the class that is being queried     *     * @return <code>true</code> if the implementation can process the indicated class     */    boolean supports(Class clazz);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -