Laravel5.5 Policy 权限认证,如何自动对应方法

使用Laravel5.5 做权限认证的时候,在控制器每个方法下都要加一句$this->authorize('view', $xxx);

这样弄起来很麻烦,有时候有的方法忘记了写这个认证的。

有没有不用在每个控制器的方法里都写这样的认证?让其自动对应不同的控制器的方法?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Epona
最佳答案

使用中间件处理呢

Route::put('/post/{post}', function (Post $post) {
    // 当前用户可以更新博客...
})->middleware('can:update,post');
4年前 评论
qIXbwU11 (楼主) 4年前
qIXbwU11 (楼主) 4年前
Epona (作者) 4年前
讨论数量: 3
Epona

@qIXbwU11 可以在Controller中的 __construct()方法中使用$this->authorizeResource()方法。

class ArticleController extends Controller
{
    public function __construct()
    {
        $this->authorizeResource(Article::class);
    }
}

参考 Laracasts

4年前 评论
qIXbwU11 (楼主) 4年前
Epona

使用中间件处理呢

Route::put('/post/{post}', function (Post $post) {
    // 当前用户可以更新博客...
})->middleware('can:update,post');
4年前 评论
qIXbwU11 (楼主) 4年前
qIXbwU11 (楼主) 4年前
Epona (作者) 4年前

@Epona
如果resource的话,如何使用中间件添加权限认证呢?
Route::resource('xxx', 'Admin\Setting\xxxController');这样的,

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!