Laravel 4 身份验证。限制对资源的某些功能的访问,但不是全部
Posted
技术标签:
【中文标题】Laravel 4 身份验证。限制对资源的某些功能的访问,但不是全部【英文标题】:Laravel 4 authentication. Restrict access to some functions of a resource but not all 【发布时间】:2013-09-09 21:17:46 【问题描述】:我有这个博客资源,它具有常用的 CRUD 方法。(索引、创建、存储、显示、编辑、更新、销毁)。
我的 routes.php 中有以下路由:
Route::resource('blog', 'PostsController');
但我想限制除索引和显示之外的所有内容。 所以我有
Route::get('blog', 'PostsController@index');
Route::group(array('before' => 'auth'), function()
Route::resource('blog', 'PostsController');
);
这对索引很好,但我不知道如何路由显示方法?还是有其他方法?我应该单独路由每个 URI 并将我想要限制的那些放在我的受限访问路由中,而不是路由资源?
干杯
【问题讨论】:
【参考方案1】:Laravel 有一个功能可以让你在控制器的 __construct
方法中使用 $this->beforeFilter
指定过滤器。此函数采用第二个参数,允许您提供异常(或仅对某些方法启用过滤器)。尝试使用您的原始路由文件并像这样设置您的控制器:
class PostsController extends BaseController
function __construct()
// ...
$this->beforeFilter('auth', array('except' => array('index', 'show')));
// ...
// ...
请参阅Laravel documentation 中的控制器过滤器。它的文档并不完整,但您也可以从 here 开始更深入地了解 Laravel 的核心。
【讨论】:
感谢似乎是一个有效的选项 正是我想要的。 Laravel 很棒。【参考方案2】:在 Laravel 5 中,您可以像这样使用中间件函数:
$this->middleware('auth', array('except' => array('index', 'show')));
【讨论】:
以上是关于Laravel 4 身份验证。限制对资源的某些功能的访问,但不是全部的主要内容,如果未能解决你的问题,请参考以下文章