[英]Multiple auth in middleware. Laravel 5.4
我是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',
],
],
我在路由文件中使用了这个
Route::group(['middleware' => ['auth']], function (){
Route::get('/dashboard', 'HomeController@index');
}
您可以创建一个中间件来检查用户是否具有一定的权限。 这是我习惯的方式。
我创建了一个中间件,例如说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');
}
注意:在上面的示例中,我有一个角色表,该表与用户表有关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.