如果用户未登录,我想在消息中返回401错误。这是我的过滤器及其应用路径:
Route::filter('auth', function() {
if (!Auth::check())
{
return Response::json(array('flash' => 'Please log in.'), 401);
}
});
Route::get('/books', array('before' => 'auth', function() {
...
}));
我从教程中复制了代码,所以基本上它应该可行。但是我收到了这个错误:
"NetworkError: 500 Internal Server Error - http://localhost:8000/books"
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":
"Call to undefined method Illuminate\\Http\\Response::json()","line 42"
是否无法使用过滤器返回JSON对象?
修改: 我在其中一个Laravel控制器中得到了相同的响应,但它确实有效。
答案 0 :(得分:1)
您可以通过使用use Illuminate\Support\Facades\Response
-documentation在 Laravel 4 中实现这一目标。看看这个简单的代码段-return Response::json([]);
。
Route::filter('auth', function() {
if (!Auth::check()) {
return Illuminate\Support\Facades\Response::json([
'flash' => 'Please log in.'
], 401);
}
});
namespace App\Controllers;
use Illuminate\Support\Facades\Response;
/**
* Class ReportController
* @package App\Modules\Moderation\Controllers
*/
class ExampleController extends BaseController
{
// ################### class methods // ###############################
/**
* Create post action
* @return mixed
*/
public function someAction()
{
return Response::json([
'id' => 1337,
'name' => 'Bob',
'gender' => 'male'
]);
}
}
答案 1 :(得分:0)
尝试替换此行:
return Response::json(array('flash' => 'Please log in.'), 401);
这一个:
return Response::json(array('flash' => 'Please log in.', 401));
我相信jsno方法接受一个数组,你提供了一个数组和第二个参数。
答案 2 :(得分:-1)
我不知道为什么我可以在我的控制器中使用Response.json(),但不能在我的过滤器中使用。但在API中,我看到了JsonResponse,这对我有用:
return JsonResponse::create(array('flash' => 'Please log in.'), 401);