簡體   English   中英

Laravel 角色與 Spatie package

[英]Laravel roles with Spatie package

如何為用戶設置規則以防止他進入特定路線?

我在權限表名稱路由中添加了一列並手動輸入路由並制作了一個中間件,但問題是我的所有控制器都是資源所以有很多路由,那么最好的做法是什么?

public function handle($request, Closure $next)
{
    $routeName = $request->route()->getName();  //users.create
    $permission = Permission::whereRaw("FIND_IN_SET('$routeName',routes)")->first();  //find route
    if($permission)
    {
        if(!$request->user()->can($permission->name))
        {
            abort(403);
        }
    }
    return $next($request);
}

您可以使用中間件來保護路由。

您可以像這樣對路線進行分組:

Route::group(['middleware' => ['can:publish articles']], function () {
    //
});

或者您可以像這樣保護 controller 上的路由:

public function __construct()
{
    $this->middleware(['role:super-admin','permission:publish articles|edit articles']);
}

有關此處的信息: https://spatie.be/docs/laravel-permission/v3/basic-usage/middleware

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM