1

エンドポイントをパブリックとして公開するための適切な戦略は何ですか。私たちの Taffy API はすべてのエンドポイントで認証を行いますが、一部のエンドポイントを認証なしで公開したいと考えています。私の最初の戦略は、認証をバイパスできる /public というリソースに別のフォルダーを作成することです。

認証には 2 つの方法があります。1. リクエストで API キーを使用して認証する 2. 基本認証

私たちの onTaffyRequest

function onTaffyRequest(verb, cfc, requestArguments, mimeExt){
            local.status = "forbidden";
            local.invalidReturnData = representationOf( local.status ).withStatus(401);


            if(structKeyExists(arguments.requestArguments, "apiKey")){

            }


            /* CATCH NO BASIC auth*/            
            //if username is blank return false
            if (structAuth.username is ""){
                return local.invalidReturnData;
            }

            //check invalid password
            if(structAuth.password is ""){
                return local.invalidReturnData;
            }

    return true;
}
4

1 に答える 1

3

Taffyバージョン 2.1.0以降、 onTaffyRequest はより多くの引数を受け入れることができます:

function onTaffyRequest(verb, cfc, requestArguments, mimeExt, headers, methodMetadata){
    ...
}

(バージョン 3.0.0matchedURIもこのリストに追加されました)

この目的のために methodMetadata 引数が追加されました。それに似たものを追加allow_public="true"して、これを調べます。

someResource.cfc:

component
extends="taffy.core.resource"
taffy:uri="/foo"
{
    function get() allow_public="true" {
        return rep({ echo: arguments });
    }
}

アプリケーション.cfc:

function onTaffyRequest(verb, cfc, requestArguments, mimeExt, headers, methodMetadata, matchedURI){
    if ( methodMetadata.keyExists("allow_public") && methodMetadata.allow_public == true ){
        return true;
    }

    // your existing auth-enforcement code should go here
}
于 2016-10-12T13:34:35.947 に答える