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

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

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
Epona
最佳答案

使用中间件处理呢

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

使用中间件处理呢

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

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

6年前 评论
Epona

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

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

参考 Laracasts

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

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