php - 权限用户和角色
问题描述
我需要一些建议,基本上我有一个应用程序,用户可以在其中注册为普通客户,并且在仪表板内有一个选项可以注册为类别列表的作者。一个客户可以是许多作者。
因此,基本上在自定义仪表板中注册/订阅为作者后,会出现一个他创建的作者框,单击它后会转到具有不同菜单的特定仪表板等。
我唯一的问题是当我开始创建权限时,例如我创建了一个名为“作者”的中间件,所以当有人尝试访问这些页面时,它必须是作者。
中间件代码:
public function handle($request, Closure $next)
{
if(isset($request->id) && auth()->check() && count(auth()->user()->authorsProfile) > 0){
return $next($request);
}
return redirect('/dashboard')->with("error","Only Authors Allowed");
}
例子:
Route::group(['middleware' => ['auth','author']], function() {
//Dashboard
Route::get('authorsarea/{id}','AuthorController@dashboard')->name('author-dashboard');
});
所以我需要进行的第二个验证是在控制器内部,我需要根据 ID 检查作者 ID 是否属于客户/用户。
例子:
public function dashboard($id)
{
$user = Auth::user();
$user_author = Author::find($id);
if($user_author->user_id != Auth::user()->id){
return back()->with("error","This Author is not you");
}
//Go to dashboard
return view('frontend.author.dashboard');
}
我觉得始终粘贴此代码并检查此作者是否属于用户感觉不太干净,有没有比在我尝试访问作者的私人区域的每个页面控制器中始终粘贴此代码更好的方法?
或者即使你们觉得有一种完全不同的方式来做这一切,我也愿意接受。
解决方案
您可以制作另一个中间件并在那里进行检查,类似于您创建的作者中间件。像这样的东西:
public function handle($request, Closure $next)
{
$authorID = $request->route()->parameter('id');
$user_author = Author::find($authorID);
if($user_author->user_id != auth()->user()->id){
return back()->with('error', 'This Author is not you');
}
return $next($request);
}
推荐阅读
- android - 了解使用 libimobiledevice 进行 Android 到 iOS 连接时的连接问题
- arrays - 如何使用 make-array 或 coerce 在 Common Lisp 中将列表转换为具有相同输出的一维数组(向量)?
- angular - 无法导出“缓冲区”。只能从模块中导出本地声明
- php - 尝试在 Red Hat 服务器上安装 Xdebug 时出错
- dropdown - 我如何通过搜索进行下拉菜单?
- python - 在权限被覆盖后,端点应该需要一个令牌才能访问,但它不是
- javascript - 为什么 prevProps 总是与 componentDidUpdate 中的当前 props 相同?
- javascript - 仅打印包含传单地图的 div
- javascript - 相对于客户端屏幕移动 dom 元素位置
- java - 如何在 ec2 服务器上为 apache 风暴清理工作人员工件和风暴日志