我是PHP和Laravel的新手。我尝试在线搜索,但我无法为我的问题找到正确的答案。我希望我的特定页面只能由已经过身份验证的管理员和用户访问。基本上,所有用户都需要先登录。继承我的代码。提前谢谢。
HomeController.php
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:web, auth:admin');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('accounts.user.user_dashboard');
}
}
auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
答案 0 :(得分:0)
我在路线档案中使用了这个
Route::group(['middleware' => ['auth']], function (){
Route::get('/dashboard', 'HomeController@index');
}
答案 1 :(得分:0)
您可以创建中间件来检查用户是否具有某些权限。以下是我习惯的方式。
我创建了一个中间件,例如SuperAccess,并为那里的超级管理员编写我的逻辑。
class SuperAccess
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
if(Auth::check() && Auth::user()->role->permission == 1000){
return redirect('web/dashboard');
}
return $response;
}
}
然后我使用我需要检查superAccess的中间件,例如在DeviceController
中说class DevicesController extends Controller
{
public function __construct(){
$this->middleware('auth');
$this->middleware('super');
}
注意:在上面的例子中,我有一个与用户表有关系的角色表。