Laravel 5.8 使用守卫的多个中间件和每个守卫的特定选项
Laravel 5.8 Multiple middlewares using guards and specific options for each guard
我有一个 laravel 应用程序,它允许管理员和客户都可以访问它,并且他们每个人都将拥有特定的权限,使用 2 个单独的表为每种类型的用户进行身份验证和 2 个不同的警卫.我现在需要的是让客户访问控制器内的特定方法,并且管理员可以访问所有方法。
class OrdersController extends Controller
{
public function __construct()
{
$this->middleware(['auth:client'])->only(['index', 'create', 'store', 'edit', 'printOrder']);
$this->middleware('auth:admin');
}
但它对客户端有效,对管理员无效
我建议在访问基于角色(而不是权限)时分离控制器,否则(如果访问基于权限)那么中间件也应该基于权限,例如
$this->middleware('can:update order')->only(['update','edit']);
$this->middleware('can:store order')->only(['store','create']);
你有两个选择
- 在相应的路由上定义所需的中间件
Route::get('/some-route', [
'uses' => 'OrdersController@create',
'as' => 'create-order',
])->middleware('auth:client');
- 检查方法内部是否进行了正确的身份验证
auth('auth:client')->check()
我有一个 laravel 应用程序,它允许管理员和客户都可以访问它,并且他们每个人都将拥有特定的权限,使用 2 个单独的表为每种类型的用户进行身份验证和 2 个不同的警卫.我现在需要的是让客户访问控制器内的特定方法,并且管理员可以访问所有方法。
class OrdersController extends Controller
{
public function __construct()
{
$this->middleware(['auth:client'])->only(['index', 'create', 'store', 'edit', 'printOrder']);
$this->middleware('auth:admin');
}
但它对客户端有效,对管理员无效
我建议在访问基于角色(而不是权限)时分离控制器,否则(如果访问基于权限)那么中间件也应该基于权限,例如
$this->middleware('can:update order')->only(['update','edit']);
$this->middleware('can:store order')->only(['store','create']);
你有两个选择
- 在相应的路由上定义所需的中间件
Route::get('/some-route', [
'uses' => 'OrdersController@create',
'as' => 'create-order',
])->middleware('auth:client');
- 检查方法内部是否进行了正确的身份验证
auth('auth:client')->check()