将端点公开为 public
Expose an endpoint as public
将端点公开为 public 的好策略是什么?
我们的 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;
}
因为 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
}
将端点公开为 public 的好策略是什么? 我们的 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;
}
因为 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
}