【发布时间】:2015-03-03 16:57:51
【问题描述】:
我目前正在将一个项目从 CodeIgniter 迁移到 Laravel5。
我在 Laracasts 中看到可以在调用控制器之前使用Request::authorize() 方法来授权访问,它返回 true 或 false。
(我认为)这将是理想的解决方案,因为我可以在请求中包含权限检查,而不是通过权限检查和重定向/响应来污染控制器。
唯一的问题是,当我从 authorize() 返回 false 时,它只会加载一个空白的白色页面,上面写着 forbidden,我在 laravel.com 上找不到任何关于如何模板化的文档(要么没有文档,要么我忽略了它)
我知道我可以在 errors/404.blade.php 中编辑 404 页面,但我不知道如何自定义 403 页面,我尝试添加自定义 403.blade.php 页面,但没有显示. (https://mattstauffer.co/blog/laravel-5.0-custom-error-pages)
在请求中放置这些权限检查是个好主意吗?还是我错过了什么?
更新
我从authorize() 运行了一个回溯,看起来它抛出了一个UnauthorizedException,它扩展了RuntimeException。我已经尝试在routes.php 文件中同时捕获两者,但这也不起作用。
我也尝试创建中间件,并从一个方法调用中间件,这也不起作用,因为根本没有调用中间件。
更新 2
好的,所以我发现我只能从构造函数中调用$this->middleware(),而不是单个方法,我猜这是进步。
【问题讨论】: