我想让整个控制器仅供管理员使用,但当我尝试访问普通用户帐户时,他们仍然可以访问AdminController
中的方法:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
public function __construct(Request $request)
{
$this->middleware('auth');
if (!Auth::guest())
{
if (!$request->user()->hasRole('admin'))
{
return redirect('/');
}
}
else
{
return redirect('/');
}
}
public function index()
{
return view('admin.index');
}
}
以下是检查角色的User
模型:
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function hasRole($role)
{
return null !== $this->roles()->where('name', $role)->first();
}
答案 0 :(得分:2)
您可以在构造函数中注册为您执行此操作的中间件:
public function __construct()
{
$this->middleware('adminOnly');
}