Php 如何为同一控制器使用laravel多重身份验证保护
拉威尔5.2 我在下面给出了一个和多个认证 Admin Clients Employee 我想使用客户端和员工防护来访问同一个控制器并查看上面提到的内容Php 如何为同一控制器使用laravel多重身份验证保护,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,拉威尔5.2 我在下面给出了一个和多个认证 Admin Clients Employee 我想使用客户端和员工防护来访问同一个控制器并查看上面提到的内容 是他们的任何可能的方式。您可以使用如下中间件: Route::group([ 'middleware' => ['Admin', 'Clients', 'Employee'] ], function(){ Route::get('/Admin', 'AdminController@index'); Route::get('/Cli
是他们的任何可能的方式。您可以使用如下中间件:
Route::group([ 'middleware' => ['Admin', 'Clients', 'Employee'] ], function(){
Route::get('/Admin', 'AdminController@index');
Route::get('/Clients', 'ClientsController@index');
Route::get('/Employee', 'EmployeeController@index');
});
例如,我有一个管理中间件来检查用户id是否为1
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
use Log;
class AuthAdmin
{
private $admins; // Admin ids
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$this->admins = config('custom.admins'); // get configs
$user = Auth::user();
if($user->id != 1)){
// not admin, redirect home
return redirect('/');
}
// is admin, let request continue
return $next($request);
}
}
然后在我的路线中:
Route::group([ 'middleware' => ['auth_admin'] ], function(){
// nobody can come to these routes but admins
Route::get('/admin/index', 'AdminController@index');
});
也许你想要这样的东西
public function __construct()
{
$this->middleware('auth:Admin,Clients,Employee');
}
在您的控制器中我认为您正在尝试使用guard实现策略。您的用例应该使用策略。不,我没有实现policyguards用于身份验证,而策略用于授权。换句话说,您可以使用guards为API使用JWT,为web使用普通身份验证。但是,根据您的示例,对于不同的访问权限,这是授权,可以通过策略来完成。是的,但我已经为身份验证策略实施了不同的保护措施,用于授权我希望同一控制器具有多个身份验证保护措施我希望同一控制器具有不同的身份验证保护措施(“身份验证:客户端”、“身份验证:员工”)
Route::group([ 'middleware' => ['auth_admin'] ], function(){
// nobody can come to these routes but admins
Route::get('/admin/index', 'AdminController@index');
});
public function __construct()
{
$this->middleware('auth:Admin,Clients,Employee');
}