是这样的,我需要在控制器的不同方法检查不同的权限, 我应该如何返回这些提示。
public function create()
{
// 这里我如何在检查出权限不足,返回上一页?
$this->checkPermission('create admin');
$roles = Role::where('guard_name', 'admin')->get();
return view('admin.admins.create', compact('roles'));
}
public function edit(Admin $admin)
{
$this->checkPermission('edit admin');
$roles = Role::where('guard_name', 'admin')->get();
return view('admin.admins.edit', compact('admin', 'roles'));
}
private function checkPermission($permission)
{
if (! $this->guard()->user()->can($permission)) {
return back()->with('status', '权限不足');
}
}
觉得如果每一个方法都写if有点那什么。有没有更优雅的处理方法?
4 回答
![?](http://img1.sycdn.imooc.com/533e4bec0001ae5302000200-100-100.jpg)
RISEBY
TA贡献1856条经验 获得超5个赞
我打算使用的方法是这样的:
private function checkPermission($permission)
{
if (! $this->guard()->user()->can($permission)) {
abort(404);
}
}
![?](http://img1.sycdn.imooc.com/5458477f0001cabd02200220-100-100.jpg)
沧海一幻觉
TA贡献1824条经验 获得超5个赞
可以创建一个中间件, 设置时如下:
Route::get('', ['middleware' => 'check:权限名字']);
class check
{
public function handle($req, $next, $perName)
{
if (判断权限) {
return 如果不通过的话.
}
return $next($req);
}
}
- 4 回答
- 0 关注
- 476 浏览
添加回答
举报
0/150
提交
取消