【问题标题】:Restrict access to admins with laravel hesto / multiauth使用 laravel hesto / multiauth 限制对管理员的访问
【发布时间】:2018-01-14 08:05:14
【问题描述】:

我一直在使用 Laravel Hesto / multi Auth 为用户和管理员创建身份验证... 我还创建了只有管理员才能访问的其他视图。我还创建了访问这些页面的路径...

Route::group(['prefix' => 'admin'], function () {
    Route::get('/', function (){
       return redirect('/admin/login');
    });
    Route::get('/login', 'AdminAuth\LoginController@showLoginForm')->name('login');
    Route::post('/login', 'AdminAuth\LoginController@login');
    Route::post('/logout', 'AdminAuth\LoginController@logout')->name('logout');

    Route::get('/register', 'AdminAuth\RegisterController@showRegistrationForm')->name('register');
    Route::post('/register', 'AdminAuth\RegisterController@register');

    Route::post('/password/email', 'AdminAuth\ForgotPasswordController@sendResetLinkEmail')->name('password.request');
    Route::post('/password/reset', 'AdminAuth\ResetPasswordController@reset')->name('password.email');
    Route::get('/password/reset', 'AdminAuth\ForgotPasswordController@showLinkRequestForm')->name('password.reset');
    Route::get('/password/reset/{token}', 'AdminAuth\ResetPasswordController@showResetForm');

    // Routes settings admin
    Route::resource('/settings/langs', 'Admin\LangController');
    // Route core application
    Route::resource('/mappings/sectors', 'Admin\SectorController');
});

我的问题是设置/语言和映射/扇区的路线可以由未登录的用户访问......并且这些页面应该受到限制......

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    只需将它们包裹在auth middleware

     Route::group(['prefix' => 'admin'], function () {
    
         Route::get('/', function (){
               return redirect('/admin/login');
            });
         Route::get('/login', 'AdminAuth\LoginController@showLoginForm')->name('login');
         Route::post('/login', 'AdminAuth\LoginController@login');
         Route::post('/logout', 'AdminAuth\LoginController@logout')->name('logout');
    
         Route::get('/register', 'AdminAuth\RegisterController@showRegistrationForm')->name('register');
         Route::post('/register', 'AdminAuth\RegisterController@register');
    
         Route::post('/password/email', 'AdminAuth\ForgotPasswordController@sendResetLinkEmail')->name('password.request');
         Route::post('/password/reset', 'AdminAuth\ResetPasswordController@reset')->name('password.email');
         Route::get('/password/reset', 'AdminAuth\ForgotPasswordController@showLinkRequestForm')->name('password.reset');
         Route::get('/password/reset/{token}', 'AdminAuth\ResetPasswordController@showResetForm');
    
         Route::group(['middleware'=>'auth'], function(){
            // Routes settings admin
            Route::resource('/settings/langs', 'Admin\LangController');
            // Route core application
            Route::resource('/mappings/sectors', 'Admin\SectorController');
        });
    });
    

    这将阻止非授权用户访问这些路由。

    【讨论】:

    • 它工作正常.. 在我的情况下,我不得不写: Route::group(['middleware'=>'admin'], function() 代替
    • @davidvera 这样验证用户他们必须是管理员才能访问路由。所以我会保留它的身份验证。但是你的选择你现在知道该怎么做了:) 所以请标记为 anwsered
    猜你喜欢
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多