gpt4 book ai didi

Laravel 条件路由过滤器

转载 作者:行者123 更新时间:2023-12-01 22:24:37 25 4
gpt4 key购买 nike

嘿,伙计们,你能帮我一下吗?这让我发疯......

假设我有一种方法来检查用户是否是管理员:

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

然后我将其附加到路由过滤器:

    Route::filter('admin', function($route, $request)
{
if ( ! Auth::user()->isAdmin()) {

Notification::error('No permission to view this page!');
return Redirect::back();
}
});

现在,我将其传递给路由组

Route::group(array('before' => 'admin'), function()
{
Route::post('users/{id}/update_password', 'UserController@update_password');
Route::post('users/{id}/delete', 'UserController@force_delete');
Route::delete('users/{id}', array('as' => 'users.destroy', 'uses' => 'UserController@destroy'));
Route::post('users/{id}/restore', 'UserController@restore');
Route::get('users/create', array('as' => 'users.create', 'uses' => 'UserController@create'));
Route::post('users', array('as' => 'users.store', 'uses' => 'UserController@store'));
Route::get('users/{id}/edit', array('as' => 'users.edit', 'uses' => 'UserController@edit'));
Route::put('users/{id}', array('as' => 'users.update', 'uses' => 'UserController@update'));
});

这里的问题是,如果用户试图更新它自己的个人资料页面,但显然他不是管理员,我如何允许用户绕过此过滤器?我只想阻止非管理员对用户路由的所有访问,但允许用户在自己的个人资料上编辑/更新等,但也允许管理员这样做。

你能给我指出正确的方向吗?

最佳答案

您可以获取相关的请求段以在过滤器中检查它:

Route::filter('admin', function($route, $request)
{
if ( ! Auth::user()->isAdmin() && Auth::user()->username !== Request::segment(2)) {
Notification::error('No permission to view this page!');
return Redirect::back();
}
});

关于Laravel 条件路由过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com