【问题标题】:Expose an endpoint as public将端点公开为公共
【发布时间】:2017-02-21 01:32:29
【问题描述】:

什么是公开端点的好策略。 我们的 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;
}

【问题讨论】:

    标签: coldfusion taffy


    【解决方案1】:

    由于 Taffy version 2.1.0,onTaffyRequest 可以接受更多参数:

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

    (Version 3.0.0 也将matchedURI 附加到此列表中)

    为此添加了 methodMetadata 参数。向其中添加 allow_public="true" 之类的内容并进行检查。

    someResource.cfc:

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

    Application.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
    }
    

    【讨论】:

    • 人,来自马口。
    • methodMetadata.keyExists("allow_public") 在 CF10 中不起作用我将其更改为 if ( StructKeyExists(methodMetadata, "allow_public") && methodMetadata.allow_public == true ),现在效果很好。谢谢
    • 是的,因为你没有指出 ACF 的版本,我只是假设最新的语法没问题。很高兴你明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2012-04-18
    • 2020-09-30
    • 2019-06-05
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多