1

各メソッドを実行する前に、サービス クラスのユーザー権限を確認したいと考えています。これが私の現在のアプローチです:

appContext.xml:

<bean id="requestSeviceImpl" class="services.impl.RequestSeviceImpl">
    <property name="permissionService" ref="permissionServiceImpl" />
    ...
</bean>

実装:

public class RequestServiceImpl implements RequestService
{
    private PermissionService permissionService;
    ...

    public void setPermissionService(PermissionService permissionService)
    {
        this.permissionService = permissionService;
    }

    @Override
    @Transactional
    public RequestResultModel submitRequest(Request request)
    {
        if(permissionService.isCurrentUserAuthorized(request,"submit"))
        {
            //submit request
        }
        //throw a permission exception
    }

    @Override
    @Transactional
    public void sendRequest(Request request)
    {
        if(permissionService.isCurrentUserAuthorized(request,"send"))
        {
            //send request
        }
        //throw a permission exception
    }

    ...
}

私が望むのは、カスタム アノテーション (@Secure) で権限チェックを処理することだけです。これは、permissionService でパーミッションをチェックし、必要に応じてパーミッション例外をスローする必要があります。そして、requestServiceImpl または permissionServiceImpl クラスを再インスタンス化したくありません (Spring Bean を使用する必要があります)。

@Override
@Transactional
@Secure(...)
public RequestResultModel submitRequest(Request request)
{
    //submit request
}

これどうやってするの?

4

1 に答える 1

0

私が考えることができる唯一の方法は、Aspect Oriented Programming (AOP)を使用することです。Spring AOP または AspectJ のいずれかを使用できます。本AspectJ in Action をご覧になることをお勧めします。最初の章はサンプルとして利用でき、AspectJ で何ができるかを説明します。後続の章では、メソッドを保護するために、実行しようとしていることを正確に実行するサンプル コードを使用します。

于 2013-10-02T20:14:56.523 に答える