簡體   English   中英

如何動態獲取角色和權限 - Laravel

[英]how to get the roles and permissions dinamically - Laravel

我正在嘗試為我的 laravel API 實現角色和權限。 我安裝了這個包:

https://yajrabox.com/docs/laravel-acl/3.0/introduction

如果有人能向我解釋它是如何工作的,那就太好了,我想做的就是在用戶點擊一個 API 路由時獲得許可。 我不想在每條路線中都設置中間件,因為我要做幾條路線,每次設置中間件都會很痛苦,我想動態地做。

我試圖自己做,但它不起作用。 這是我在 Authserviceprovider 中的代碼:

public function boot(GateContract $gate)
{
    $this->registerPolicies();

    Passport::routes();

    Passport::tokensExpireIn(Carbon::now()->addDays(15));

    Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));

    $permissions = Permission::with('roles')->get();

    foreach ($permissions as $permission)
    {
        $gate->define($permission->name, function (User $user) use ($permission) {
            return $user->hasPermission($permission);
        });
    }
}

我這樣做: https : //github.com/laracasts/laravel-5-roles-and-permissions-demo/tree/master/app

您可以在 web.php / api.php 文件中使用中間件,例如下面的示例 (web.php):

Route::group(['middleware' => ['verified']], function () {
     Route::get('/', 'HomeController@index')->name('home');
});

正如我的示例所示,這將檢查帳戶是否經過驗證,然后才允許查看“/”

更新

這幾乎與上面的問題無關,但正如 Op 在我的答案的評論中提出了第二個問題:這是我的中間件代碼,用於向 Op 展示中間件將如何運行:

public function handle($request, Closure $next)
    {
        $verified = Auth::user();

        if ($verified->verified == 0)
        {
            Auth::logout();

            Session::flash('error', "$verified->username, your email address hasn't been verified yet therefore you're unable sign in.");

            return Redirect('/login');
        }
        return $next($request);
    }

暫無
暫無

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

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