Laravel控制器构造器中的多个角色过滤器

AWJ

我有一个关于过滤控制器及其针对多个用户角色的操作的问题。可以说我有一个名为MyController的控制器:

public class MyController extends \BaseController
{
   public static function index()
   {
   }

   public static function show()
   {
   }

   public static function create()
   {
   }

   public static function store()
   {
   }

   public static function other()
   {
   }
}

我为每个角色都有2个过滤器,分别命名为admin和staff:

Route::filter('admin', function()
{
    // Lines of code to get role
    if($role != 'admin') return View::make('errors.401');
});

Route::filter('staff', function()
{
    // Lines of code to get role
    if($role != 'staff') return View::make('errors.401');
});

然后,我试图在MyController的构造函数上使用beforeFilter:

public function __construct()
{
    $this->beforeFilter('admin', ['only' => ['index', 'show', 'create', 'store']]);
    $this->beforeFilter('staff', ['only' => ['index', 'show']]);
}

当我添加第一个beforeFilter时,它可以按预期的方式工作(当我以工作人员身份登录到我的应用程序时,我无法访问索引,显示,创建和存储方法)。但是,当我添加第二个过滤器并再次以工作人员身份登录时,我无法访问索引并显示操作,我希望工作人员可以访问该索引。

我的问题是,是否可以在控制器的构造函数中为多个角色定义过滤器?(在这种情况下,我想使操作索引并显示管理员和工作人员可以访问,但仅创建和存储管理员可以访问的内容),如果可以的话,我该如何实现?

谢谢。

阿里·爱侣湾(Ali Irawan)

我假设您拥有Admin可以访问所有功能,而工作人员可以访问除“ show”以外的所有内容

这是控制器

class MyController extends \BaseController
{
   public function __construct(){
       $this->beforeFilter('admin', ['only' => ['show']]);
   }    
   public function index()
   {
    echo "index";
   }

   public function show()
   {
    echo "show";
   }
}

在上一篇文章中看到,您正在使用公共类,我相信在PHP中您只需要类,在函数中最好不要使用静态类。

这是filters.php

Route::filter('admin', function()
{
    // Lines of code to get role
    if($role != 'admin') return "This is only for admin";
});

在routes.php中

Route::get("/my", "MyController@index");
Route::get("/show", "MyController@show");

然后尝试以管理员身份登录,您将可以访问“索引”和“显示”。然后尝试以工作人员身份登录,您将可以访问“索引”,但不能访问“显示”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个过滤器的控制器逻辑

来自分类Dev

Laravel控制器过滤器问题

来自分类Dev

AngularJS中的控制器和过滤器模块

来自分类Dev

在AngularJS控制器中应用过滤器

来自分类Dev

在控制器中干净地处理多个过滤器(参数)

来自分类Dev

Laravel 4中运行控制器过滤器的顺序是什么

来自分类Dev

如何在 Laravel API 上的控制器中应用跳过和限制过滤器

来自分类Dev

Laravel控制器过滤器:在对特定方法进行过滤之前,该过滤器不起作用

来自分类Dev

控制器性能比较中的自定义过滤器与过滤器功能

来自分类Dev

调用超出当前控制器范围的过滤器

来自分类Dev

Rails控制器通用过滤器

来自分类Dev

带阵列的过滤器阵列控制器

来自分类Dev

控制器前的 Java 过滤器输入 XML

来自分类Dev

Laravel 4:在路由中添加过滤器并通过控制器

来自分类Dev

Laravel 4:将值从过滤器传递到控制器

来自分类Dev

Laravel 4:将模型从过滤器传递到控制器操作

来自分类Dev

Laravel过滤器资源控制器-所有者只能访问

来自分类Dev

将视图过滤器转换为控制器过滤器

来自分类Dev

AngularJS-视图控制器和过滤器控制器

来自分类Dev

AngularJS-在自定义过滤器中从控制器访问$ scope

来自分类Dev

如何知道将从Web API授权过滤器中调用哪种控制器方法

来自分类Dev

在过滤器属性中获取区域,控制器和动作名称

来自分类Dev

控制器中的Angualr.js过滤器数组

来自分类Dev

如何在控制器的Zend Framework 2中禁用字段过滤器?

来自分类Dev

如何在控制器中链接AngularJS过滤器

来自分类Dev

在Cuba Platform控制器中打开带有过滤器的窗口

来自分类Dev

AngularJS,如何从控制器内部获取并设置ng-repeat中定义的过滤器?

来自分类Dev

尝试在所有控制器中应用授权过滤器,但未使用IAuthorizationHandler

来自分类Dev

Rails控制器过滤器在Ruby中具有什么语言功能?

Related 相关文章

  1. 1

    多个过滤器的控制器逻辑

  2. 2

    Laravel控制器过滤器问题

  3. 3

    AngularJS中的控制器和过滤器模块

  4. 4

    在AngularJS控制器中应用过滤器

  5. 5

    在控制器中干净地处理多个过滤器(参数)

  6. 6

    Laravel 4中运行控制器过滤器的顺序是什么

  7. 7

    如何在 Laravel API 上的控制器中应用跳过和限制过滤器

  8. 8

    Laravel控制器过滤器:在对特定方法进行过滤之前,该过滤器不起作用

  9. 9

    控制器性能比较中的自定义过滤器与过滤器功能

  10. 10

    调用超出当前控制器范围的过滤器

  11. 11

    Rails控制器通用过滤器

  12. 12

    带阵列的过滤器阵列控制器

  13. 13

    控制器前的 Java 过滤器输入 XML

  14. 14

    Laravel 4:在路由中添加过滤器并通过控制器

  15. 15

    Laravel 4:将值从过滤器传递到控制器

  16. 16

    Laravel 4:将模型从过滤器传递到控制器操作

  17. 17

    Laravel过滤器资源控制器-所有者只能访问

  18. 18

    将视图过滤器转换为控制器过滤器

  19. 19

    AngularJS-视图控制器和过滤器控制器

  20. 20

    AngularJS-在自定义过滤器中从控制器访问$ scope

  21. 21

    如何知道将从Web API授权过滤器中调用哪种控制器方法

  22. 22

    在过滤器属性中获取区域,控制器和动作名称

  23. 23

    控制器中的Angualr.js过滤器数组

  24. 24

    如何在控制器的Zend Framework 2中禁用字段过滤器?

  25. 25

    如何在控制器中链接AngularJS过滤器

  26. 26

    在Cuba Platform控制器中打开带有过滤器的窗口

  27. 27

    AngularJS,如何从控制器内部获取并设置ng-repeat中定义的过滤器?

  28. 28

    尝试在所有控制器中应用授权过滤器,但未使用IAuthorizationHandler

  29. 29

    Rails控制器过滤器在Ruby中具有什么语言功能?

热门标签

归档