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/”,
`
`确定。自动卸载怎么样,你也这么做了吗?