Laravel 5 尝试实现权限、角色的laravel背包
我已经为BackpackCRUD包安装了permission manager,它允许我实现权限、角色、用户,但是没有示例可以将代码放在哪里来验证用户是否满足要求 例如:我在我的设备控制器的函数setup()中添加了下面的代码,它显示了一个错误,我应该在路由中使用中间件吗 我最近创建了中间件:Laravel 5 尝试实现权限、角色的laravel背包,laravel-5,backpack-for-laravel,Laravel 5,Backpack For Laravel,我已经为BackpackCRUD包安装了permission manager,它允许我实现权限、角色、用户,但是没有示例可以将代码放在哪里来验证用户是否满足要求 例如:我在我的设备控制器的函数setup()中添加了下面的代码,它显示了一个错误,我应该在路由中使用中间件吗 我最近创建了中间件: class RoleMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $re
class RoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $role, $permission)
{
// dd($request->user());
// if (!Auth::user()->hasRole($role)) {
// Alert::add('error', 'You do not have necessary authorization to access to the page')->flash(); return redirect('home');
// }
// dd($request->user());
if (Auth::guest()) {
return redirect(url(config('backpack.base.route_prefix').'/login'));
}
dd($request->user()->hasRole($role)); //si pregunta si tiene el rol de administrador
if (!$request->user()->hasRole($role)) {
Alert::info('You do not have necessary authorization to access to the page Role');
// abort(403);
}
if (!$request->user()->can($permission)) // pregunta si tiene el permiso de back_end
{
Alert::error('You do not have necessary authorization to access to the page Permission');
abort(403);
}
return $next($request);
}
}
我的路线:
Route::group(['middleware' => ['admin','role:admin,access_backend']], function() {
CRUD::resource('equipos', 'EquiposCrudController');
CRUD::resource('regiones', 'RegionesCrudController');
CRUD::resource('parametros', 'ParametrosCrudController');
CRUD::resource('estaciones', 'EstacionesCrudController');
}
如果我有一个具有1个角色“编辑”和权限“后端”和“编辑”的用户编辑器,
只有当我的编辑器用户符合管理员角色时,才会接受这样的中间件设置。正确的??我是否也应该向编辑器用户添加admin角色?问题是角色admin拥有所有权限
我打算在每个控制器上动态实现下面的代码,而不是要求每个角色。还有别的选择吗
class EquiposCrudController extends CrudController
{
public function setup() {
if($user->hasRole('editor')){
$this->crud->denyAccess(['create','delete']);
}
if($user->hasRole('usuario')){
$this->crud->denyAccess(['create','delete','update']);
}
是的,中间件是检查用户身份验证的好选择 和授权级别。您可以轻松地询问请求对象并相应地重定向。软件的实际身份验证(登录/注销)应由控制器处理 看看Laravel的门户和策略,它们为单个用户提供了微调的访问级别,例如您提到的用户具有特定权限的地方 这是一个开始这一切的好地方: 试试这个:
$user = Auth::user();
if($user->hasRole('editor')){
$this->crud->denyAccess(['create','delete']);
}
if($user->hasRole('usuario')){
$this->crud->denyAccess(['create','delete','update']);
}
在安装程序中这样做看起来是正确的谢谢,我正在研究拉威尔的门和策略,目前,一想到试图动态地进行角色检查,我就头晕目眩,因为CrudController扩展了CrudController{public function setup(){if($user->hasRole('editor'){$this->crud denyAccess(['create','delete'];}if($user->hasRole('usuario')){$this->crud->denyAccess(['create','delete','update']);}如果您正在执行常规角色检查,请为每个for创建一个中间件,并相应地将其应用于您的路由。如果您正在使用资源路由和控制器,则可以在控制器中使用automatically Authorized using authorizeResource(Model::class)来简化操作。