用户A会话获得用户B会话laravel 5.6



用户A以"admin"角色登录。用户B以"受限用户"的身份登录到同一门户网站。用户A更改使用权限B。两者都在同一页面上,即"将权限附加到角色页面"。用户A不允许用户B访问该页面,当用户A提交表单时,用户B刷新其页面并获取用户A的会话。只有当用户A同时提交表单和用户B重定向页面时,才会发生这种情况。

Laravel版本:5.6委托角色管理会话:基于文件的

这是代码。

function updatePermissions(Request $request)
{
if (!hasRole('SuperAdmin') && !userCan('attach_permissions')) {
abort('404');
}
$roleId = $request->input('role_id');
$permIds = $request->input('perm');
$role = Role::where('id', '=', $roleId)->first();
if (!$role) {
abort('404');
}
if ($permIds == null) {
$role = Role::findOrFail($roleId);
$role_permissions = $role->perms()->get();
//print_r($role_permissions);exit;
$rolePermIds = array();
foreach ($role_permissions as $permission) {
$rolePermIds[] = $permission->id;
}
$role->perms()->detach($rolePermIds);
} else {
/*$role->perms()->sync(array_keys($permIds));*/
$permissions_new = (array_keys($permIds));
RolePermission::where('role_id', '=', $roleId)->forceDelete();
foreach ($permissions_new as $item) {
$r = new RolePermission();
$r->role_id = $role->id;
$r->permission_id = $item;
$r->save();
}
}
return redirect()->back();
}

有几种方法可以解决这个问题,其中之一是在Laravel中使用中间件。https://laravel.com/docs/5.7/middleware#defining-中间件

另一种方式,创建PoliciesGateshttps://laravel.com/docs/5.7/authorization#gates

在您的情况下,middleware可以解决。

最新更新