我有一个laravel应用程序,允许管理员和客户都可以访问它,并且他们每个人都将具有2个单独的表,用于每种类型的用户进行身份验证和2个不同的防护措施,具有特定的权限。我现在需要的是让客户访问控制器内的特定方法,而管理员可以访问所有方法。
class OrdersController extends Controller
{
public function __construct()
{
$this->middleware(['auth:client'])->only(['index', 'create', 'store', 'edit', 'printOrder']);
$this->middleware('auth:admin');
}
但是对客户端来说很好用,对管理员不起作用
您有两个选择
Route::get('/some-route', [
'uses' => 'OrdersController@create',
'as' => 'create-order',
])->middleware('auth:client');
auth('auth:client')->check()
当访问基于角色(而不是权限)时,我建议分离控制器,否则(例如,如果访问基于权限),那么中间件也应基于权限(例如)
$this->middleware('can:update order')->only(['update','edit']);
$this->middleware('can:store order')->only(['store','create']);