第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 laravel Milldeware 中向具有特定角色的用戶驗證特定路由

如何在 laravel Milldeware 中向具有特定角色的用戶驗證特定路由

PHP
POPMUISE 2022-10-09 19:57:47
我有多個具有多種權(quán)限的用戶。一個用戶可以屬于唯一的單個角色,但該角色可以具有多個權(quán)限,例如create, read, update, delete。我有一個RoleMiddleware. 我正在對用戶進(jìn)行身份驗證roleMiddleware。但是我怎樣才能防止routes特定RoleMiddleware用戶呢?例如,我有一條create-case只能由 訪問的路由operator,Admin否則每個人都重定向到404 error我如何處理它RoleMiddleware。我已經(jīng)編寫了用于身份驗證的基本代碼,其中每個具有其角色的用戶都經(jīng)過身份驗證,但是我正在了解如何在中間件中編碼,因此當(dāng)用戶點擊它時,路由可能會轉(zhuǎn)到指向角色的RoleMiddleware中間件Authenticate路由,然后給他訪問權(quán)限。角色中間件class RoleMiddleware{    public function handle($request, Closure $next, $permission = null)    {        if (Auth::check() === false)        {            return redirect('login');        }        elseif (Auth::check() === true)        {            $roles = Role::all()->pluck('slug');            if (is_null($request->user()) )            {                abort(404);            }            if (!$request->user()->hasRole($roles))            {                abort(404);            }            if ($request->user())            {                if ($request->user()->hasRole($roles))                {                    return $next($request);                }            }        }    }}
查看完整描述

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

以干凈的方式做到這一點的最佳方法是在目標(biāo)實體上創(chuàng)建策略。Laravel 策略允許你:

  • 將路由授權(quán)邏輯綁定到策略操作

  • 從項目中的任何其他位置(視圖、控制器等)輕松調(diào)用策略操作結(jié)果。

這個主題在 Laravel 文檔中有很好的介紹,所以我建議你去那里看看。不要忘記注冊策略并將其綁定到您的模型。

除此之外,這應(yīng)該可以解決問題。

class CasePolicy

{

    use HandlesAuthorization;


    public function create(User $user){

        $roles = ['operator','Admin']

        return $user->hasRole($roles);

    }

}

然后在您的路線文件中:


Route::get('create-case', 'Cases\CaseController@index')->name('create-case')->middleware('can:create,App\Case');



查看完整回答
反對 回復(fù) 2022-10-09
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊

我剛剛學(xué)習(xí)并實施了 Gate 和 Policy,希望這是正確的,因為它對我有用。偉大的概念謝謝。


Route::get('create-case', 'Cases\CaseController@index')->name('create-case')->middleware('can:create-case,App\Model\Case');

門:


class AuthServiceProvider extends ServiceProvider

{

    /**

     * The policy mappings for the application.

     *

     * @var array

     */

    protected $policies = [

        // 'App\Model' => 'App\Policies\ModelPolicy',


        User::class => CreateCase::class


    ];


    /**

     * Register any authentication / authorization services.

     *

     * @return void

     */

    public function boot()

    {

        $this->registerPolicies();


        Gate::define('create-case','App\Policies\CreateCase@create_case');


    }

}

政策


class CreateCase

{

    use HandlesAuthorization;


    /**

     * Create a new policy instance.

     *

     * @return void

     */

    public function __construct()

    {

        //

    }


    public function create_case(User $user){


        if($user->hasRole(['admin']) ||$user->hasRole(['operator']) && $user->hasPermissionTo('create')){


            return true;

        }else

            return false;


    }

}


查看完整回答
反對 回復(fù) 2022-10-09
  • 2 回答
  • 0 關(guān)注
  • 130 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號