【发布时间】:2014-04-01 18:27:47
【问题描述】:
我构建了一个过滤器,它检查发送的一些键和 ID,然后给出通过或不通过。问题是 Laravel 中的过滤器应该返回一个字符串,而我只是想返回一个布尔值并让它触发预期的路由。
过滤器:
Route::filter('api_checkauth', function($route)
{
//user"ok"
$user_id = (int) $route->getParameter('user_id');
$sig = $route->getParameter('sig');
$user = User::find($user_id);
if($user) {
//user email
$email = $user->email;
//user api key
$api_key = $user->api_key;
//recreate signature
$_sig = hash_hmac("sha256", $email . $user_id, $api_key);
if($_sig === $sig) {
return Response::json(array("message"=>"Request Ok"),200);
} else {
return Response::json(array("message"=>"Request Bad"),400);
}
} else {
return Response::json(array("message"=>"Request not authorized"),401);
}
});
路线:
// Route group for API versioning
Route::group(array('prefix' => 'api/v1', 'before' => 'api_checkauth'), function()
{
Route::get('/pim/{user_id}/{sig}', 'MoreOrLessController@index');
});
所以问题是,我怎样才能触发我在组中定义的路线?因为现在发生的是只打印一条消息而不是应该触发的控制器方法。
谢谢
【问题讨论】: