1

私は Restlet を使用して RESTful API を実装しようとしていますが、基本的な Role と Method Authorizers 以外のものはほとんど見つかりませんでした。ユーザーがアクセスできるルートとルートのメソッドをデータベースに保存しました。私が今直面している問題は、オーソライザーでパスを取得する方法です。それは私が収集する必要があるリソースですか? そして、オーソライザーにどのようにルーティングすればよいのでしょうか? 私はこれまでに持っているものを投稿し、オーソライザーでパスまたはリソースを取得する方法を探しています。本や多くの一般的な例を調べましたが、探しているものが静かに見つかりませんでした。

マイ ルーティング アプリケーション:

public class MyRoutingApp extends org.restlet.Application {

    @Override  
    public synchronized Restlet createInboundRoot() { 

        Context context = getContext();
        Router router = new Router(context);

        router.attach("/user", Users.class);
        router.attach("/post", Posts.class);
        router.attach("/comment", Comments.class);

        ChallengeAuthenticator authenticator = new ChallengeAuthenticator( 
                context, ChallengeScheme.HTTP_BASIC, "My test realm" );

        //create Verifier to ensure that the user is authenicated
        MyVerifier verifier = new MySecretVerifier();
        //grab user Roles and add them to the request
        MyEnroler enroler = new MyEnroler();

        authenticator.setVerifier( verifier );
        authenticator.setEnroler( enroler );

        //Looks up if user can be allowed to resource
        MyAuthorizer authorizer = new MyAuthorizer();
        authorizer.setNext( router );

        authenticator.setNext( authorizer );
        return authenticator; 
    }
}

私の承認者:

public class MyAuthorizer extends Authorizer {

    @Override
    protected boolean authorize( Request request, Response response ) {

        //has the security roles and user from verifier and enroler
        ClientInfo info = request.getClientInfo();
        //get http method
        Method method = request.getMethod();

        //need to get the route or resource user is attempting to access
        //allow or disallow access based on roles and method
    }
}
4

1 に答える 1

2

ターゲット リソース URI は、Request#getResouceRef().getRemainingPart() を介して入手できます。

于 2013-05-14T20:59:05.677 に答える