Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel自定义包中调用中间件并进行身份验证_Php_Laravel_Middleware - Fatal编程技术网

Php 如何在laravel自定义包中调用中间件并进行身份验证

Php 如何在laravel自定义包中调用中间件并进行身份验证,php,laravel,middleware,Php,Laravel,Middleware,我正在开发一个基于模块/包的应用程序。我创建了一个中间件RoleMiddleware,还附上了我的目录图片 app /Http /Middleware /RoleMiddleware.php 我有我的自定义包的以下目录 app /package /cases (This is the package name) /src /Http /Controllers /CaseController.php 现在我想在p

我正在开发一个基于模块/包的应用程序。我创建了一个中间件
RoleMiddleware
,还附上了我的目录图片

app
 /Http
  /Middleware
   /RoleMiddleware.php
我有我的自定义包的以下目录

 app
   /package
    /cases  (This is the package name)
     /src
      /Http
       /Controllers
        /CaseController.php
现在我想在packager-controller构造函数中调用我的
rolemidware
,但是角色中间件在构造函数中不起作用。当使用
web.php
调用以下中间件时,我该如何做?在我的包中死记硬背返回
null
,但如果我在默认路径下路由
web.php
文件,则返回null

RoleMiddlware在默认的Middlware文件夹中定义

class RoleMiddleware
    {

    public function handle($request, Closure $next)
    {
        dd(Auth::user());
        if (Auth::check() === false) {
            return redirect('login');
        } elseif (Auth::check() === true) {

            dd('hi');

            $roles = Role::all()->pluck('slug');

            if (is_null($request->user())) {
                abort(404);
            }
            if (!$request->user()->hasRole($roles)) {
                abort(404);
            }

            if ($request->user()) {
                if ($request->user()->hasRole($roles)) {
                    return $next($request);
                }
            }
        }
    }
}
在包
app/cases/Http/Controller/caseController.php中定义案例控制器

class CaseController extends Controller
{
    public function __construct()
    {
        $this->middleware('role',['except' => 'caseUrlView']);


    }
    public function index()
    {
        $data['portal'] = Portal::all();
        $data['operators'] = Operator::all();

        return view('cases::case', $data);
    }

您必须将
名称空间添加到您的
composer.json
文件中,您这样做了吗?是的,我确实在composer.json文件“autoload dev”中添加了名称空间:{````“psr-4”:{`
“Abdullah\\cases\\\\”:“package/cases/src/”,
`
`确定。自动卸载怎么样,你也这么做了吗?