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

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

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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
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年前

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