我使用Laravel 5.4创建了使用laravel东西创建的身份验证系统保护程序,我还创建了基于角色的注册表单。
到目前为止,到目前为止,所有方法都可以使用,但是例如,我只希望某些页面仅对管理员可用,因此我创建了一个新用户页面,以允许管理员创建用户。
我的RegisteruserControoller:
namespace App\Http\Controllers;
use App\Proveedor;
use App\RubroProveedor;
use Illuminate\Http\Request;
use App\Http\Requests\StoreProveedor;
use App\Http\Requests\UpdateProveedor;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redirect;
use Alert;
use Exception;
use Auth;
class RegisteruserController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct() {
$this->middleware('role:admin');
}
public function index(Request $request)
{
return view('usuarios.registeruser');
}
这里的问题是,如果我总是在构造IM中使用中间件时,总是被要求一次又一次地登录,并且我需要禁用该中间件,但要保持警惕,以仅允许管理员用户创建新用户。
我不确定我是否清楚,对不起我的英语不好。
我创建了一个名为CheckRole的中间件:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckRole
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $role)
{
if (! $request->user()->hasRole($role)) {
abort(401, 'This action is unauthorized.');
}
return $next($request);
}
}