2

我有两个关于 Fat Free Framework 的问题。

首先,我如何在 GET 请求中使用多个参数(无脂肪框架中的令牌)?或者,每个 REST GET 请求是否可能只有 1 个令牌,并且应该将其他参数作为常规 GET 请求处理,例如:

domain/rest/somedata/5231?param1=value1&param2=value2

?param1=value1¶m2=value2 应该“手动”解析,而不是由框架解析?

是否有可能使用 Fat Free Framework 构建一个 RESTful API,并且还有一些区域或路由需要身份验证?如果是这样,如何?

我刚刚偶然发现了这个相关问题:REST API 最佳实践:在哪里放置参数?

[编辑]:我发现确实可以使用多种方法对无脂肪框架进行身份验证。但是,它们似乎没有很好的文档记录(至少在他们的 github wiki 上没有)。

[edit2]因为它只是非常基本的身份验证,所以现在我正在使用这个:

function beforeRoute($f3,$params) {
    $url = $params[0];
    $parsed_key = parse_str(parse_url($url, PHP_URL_QUERY));

    if (isset($apikey)){
        // check if apikey is in database
        $authenticated = false;
        foreach(R::find('apikey') as $key_bean) {
            if($key_bean->key == $apikey) {
                $authenticated = true;
                break;
            }
        }
        if($authenticated == false) $f3->error(403);
    } else {
        $f3->error(403);
    }
}

我正在寻找有关基本 http 身份验证方法的文档!

4

2 回答 2

3

该类auth始终根据映射器对您进行身份验证。随意使用 F3 的 Jig、Mongo 或 SQL。

$db = new DB\SQL('mysql:host=localhost;dbname=mydb', 'dbuser', '1234');
$mapper = new DB\SQL\Mapper($db, 'users');    
$auth = new Auth($mapper, array('id'=>'username','pw'=>'password'));

if($auth->basic())
    return true;

password并且username是数据库中的字段名称。id并且pw是 auth 类内部使用的。我建议在 Github 上的 dev 分支中检查 auth 类代码和单元测试。

于 2013-02-14T09:30:59.310 回答
1

一个简单的例子是......


用户名:admin,密码:123

// Create users table using Jig.
$db = new \DB\Jig('data/');
$users = array(
    0 => array('username' => 'admin', 'password' => '202cb962ac59075b964b07152d234b70'),
);
$db->write('users', $users);

$db_mapper = new \DB\Jig\Mapper($db, 'users');
$auth = new \Auth($db_mapper, array('id' => 'username', 'pw' => 'password'));

// Callback function because of md5 stored password.
function chkauth($pw) {    
    return md5($pw);
}

$auth->basic('chkauth');
于 2015-09-02T18:04:20.877 回答