如何在 laravel 中允许管理员和用户访问同一控制器



我有两个守卫adminusers,这里users是不同类型的

-users -BD -SPOC -RECRUITOR -LEADERSHIP

现在我有一些控制器,我希望管理员和用户都可以访问。如果其中任何一个已登录,但我不想允许任何其他人在没有登录的情况下访问它。

这是我的控制器

类管理控制器扩展控制器{

protected $redirectTo = '/admin/dashboard';
protected $redirectAfterLogout = '/admin/login';
public function __construct()
{
    $this->middleware('auth:admin');
}

}

在上面的控制器中,如果我使用中间件 -auth

:admin,那么只有管理员才能访问它,如果我只使用中间件-auth,那么我将把用户带到用户登录屏幕。我希望如果管理员或领导类型的用户之间的任何人登录,那么他们能够访问这个控制器。

我希望或条件在中间件中检查这个或那个,即身份验证或身份验证之间的中间件:管理员而不是两者我该怎么做?我正在使用laravel .我是新手,请帮助

您可以在

controllers中使用多个middlewares

public function __construct()
    {
        $this->middleware('auth:web,admin');
    }

Adminuser都可以访问页面

您可以在路线中执行相同的操作

Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => ['auth:web,admin']], function() {
Route::get('url','somecontroller@method');
});

您需要以上之一

Webconfig/auth.php中定义的默认guard

当您在某处使用它时

public function __construct()
        {
            $this->middleware('auth');
        }

工作原理如下,因为默认情况下放置web guard

public function __construct()
        {
            $this->middleware('auth:web');
        }

您可以使用中间件概念。中间件正在签入路由文件。以下是检查用户身份验证的方法。

Route::group(['middleware' => 'admin.user'], function () {
// Your routes which you want to allow after login
}

最新更新