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

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

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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
Epona
最佳答案

使用中间件处理呢

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

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

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

参考 Laracasts

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

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