Phi*_*oss 4 php laravel laravel-5
我目前正在将一个项目从CodeIgniter迁移到Laravel5.
我在Laracasts中看到,您可以Request::authorize()在调用控制器之前使用该方法来授权访问,并返回true或false.
这将(我认为)是理想的解决方案,因为我可以在请求中包含权限检查,而不是通过权限检查和重定向/响应污染控制器.
唯一的问题是,当我false从authorize()它返回时,它只是加载一个带有forbidden书面的空白页,我在laravel.com上找不到关于如何模板的任何文档(要么没有文档,要么我忽略它)
我知道我可以编辑404页面errors/404.blade.php,但我无法弄清楚如何自定义403页面,我试图添加一个自定义403.blade.php页面,但不会显示.(https://mattstauffer.co/blog/laravel-5.0-custom-error-pages)
将这些权限检查放在请求中是个好主意吗?或者我错过了什么?
更新
我运行了一个回溯authorize(),看起来它抛出了一个UnauthorizedException延伸RuntimeException.我试过在routes.php文件中捕获这两个,这也不起作用.
我也试图创建中间件,并从一个方法调用中间件,这也不起作用,因为中间件甚至根本没有被调用.
更新2
好的,所以我发现我只能$this->middleware()从构造函数调用,而不是单个方法,这是进步,我猜.
我所做的是forbiddenResponse()为Request抽象类添加一个方法.您可以从该方法返回响应对象以呈现人类可读错误.
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\JsonResponse;
abstract class Request extends FormRequest {
public function forbiddenResponse()
{
return new JsonResponse('Unauthorized', 403);
// or return Response::make('Unauthorized', 403);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |