2

FatFreeFrameworkについて2つの質問があります

まず、GETリクエストで複数のパラメーター(無脂肪フレームワークのトークン)を使用するにはどうすればよいですか?または、REST GETリクエストごとに可能なトークンは1つだけであり、通常のGETリクエストとして追加の引数を処理する必要があります。次に例を示します。

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

ここで、?param1 = value1&param2 = value2は、フレームワークではなく、「手動で」解析する必要がありますか?

Fat FreeFrameworkを使用してRESTfulAPIを構築し、認証が必要なエリアまたはルートを作成することは可能ですか?もしそうなら、どのように?

私はこの関連する質問に出くわしました: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ブランチで認証クラスコードと単体テストを確認することをお勧めします。

于 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 に答える