如何阻止超级用户以外的所有用户使用网址

时间:2018-10-18 06:52:44

标签: php laravel

应禁止用户获取该网址:

?main_title =横幅

?main_title = law

?main_title =常见问题解答

与此

if(\Auth::user()->hasRole(['super_admin']))

2 个答案:

答案 0 :(得分:0)

我要根据您的示例代码来假设您正在使用spatie/laravel-permission

Laravel Permission内置角色middlewares

使用它们的方法之一是将您希望只由超级管理员访问的路由进行分组

Route::group(['middleware' => ['role:super_admin']], function () {
    // YOUR ROUTES HERE
});

答案 1 :(得分:0)

使用中间件总是很好的,

因此,在您的情况下,首先为角色创建一个特质

public function isSuperadmin(){
       return Auth::user()->role->role=='superadmin';
}

之后,为超级用户创建superadmin之类的中间人,并首先包含您的特征

use App\Traits\Roles;

之后

 use Roles;
    public function handle($request, Closure $next)
    {
        if(!$this->isSuperadmin())
        {
            return back();
        }
        return $next($request);
    }

并只需在protected $routeMiddleware函数中的app / http / kernal.php中注册中间件

'superadmin' => \App\Http\Middleware\superadmin::class,

这使您的生活变得非常轻松,现在您不需要每次都检查url或角色,因为您想要阻止其他用户使用的任何url都只需使用

Route::get('/?main_title=law', 'HomeController@function')->middleware('superadmin')->name('admin-dashboard-home');

因此,如果用户角色是超级管理员,则可以允许他评估URL,您可以重定向其他用户或显示错误消息:)