1

什么是公开端点的好策略。我们的 Taffy API 在每个端点都有身份验证,但我们也希望在没有身份验证的情况下公开一些端点。我的初始策略是在名为 /public 的资源中创建另一个文件夹,它可以绕过身份验证。

我们有两种验证方式。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.0也附加matchedURI到此列表中)

为此目的添加了 methodMetadata 参数。添加类似allow_public="true"的东西并检查它。

一些资源.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 回答