【问题标题】:Laravel 5 Protecting Routes with MiddlewareLaravel 5 使用中间件保护路由
【发布时间】:2015-08-12 05:02:45
【问题描述】:

我是 Laravel 5 的新手,我只想知道如何保护特定的路由?我正在使用默认的身份验证中间件来保护我的路由,只有在您登录后才能访问。所以我有这个。

Route::group(['middleware' => 'App\Http\Middleware\Authenticate'], function()    /* Admin only Routes*/
{
     Route::get('/brk/datalist', 'BRKDailyMailsController@datalist');
});

如何仅保护 /auth/register?不影响登录之类的其他人?

在我的路由组之外,我默认有这个。

Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);

我只希望登录用户访问默认注册页面。我的登录用户都是管理员。

【问题讨论】:

    标签: authentication laravel routes laravel-5


    【解决方案1】:

    您可以像这样为特定路由设置中间件:

    Route::any('register', [
        'as' => 'register', 
        'middleware' => 'auth',
        'uses' => 'AuthController@anyRegister'
    ]);
    

    这种方式只有登录用户才能“使用”/register 页面。

    它也被命名为“注册”,因此您可以在模板、重定向等中按名称使用它。

    如果它“通过”中间件(用户已登录),来自 AuthController 的 anyRegister 操作将被执行。

    根据需要随意修改,这只是如何实现的示例。

    【讨论】:

    • Route::get('/auth/register', [ 'as' => 'register' 'middleware' => 'auth', 'uses' => 'AuthController@getRegister' ]) ;不适合我
    • 您在中间件密钥之前错过了一个逗号。并确保您的 url 和控制器/操作名称是正确的。另外我相信你不需要在你的路线中使用斜线
    • 对我不起作用,先生。即使没有登录用户,我仍然可以访问 /auth/register。
    • 哦,还有一件事。你在发布数据,对吧?所以 Route::get 只会匹配 GET 方法。您应该定义一个单独的 Route::post 或将 Route::any 用于请求方法独立的路由。此外,如果 'App\Http\Middleware\Authenticate' 中间件适用于路由组,您可能也想尝试为单个路由设置相同
    【解决方案2】:

    你可以这样试试

    Route::group(['middleware' => 'auth'], function()
    {
        Route::get('/brk/datalist', 'BRKDailyMailsController@datalist');
    });
    

    或者你可以在每个控制器的第一行使用构造

    public function __construct()
    {
        $this->middleware('auth');
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2021-09-28
      • 2019-12-04
      • 2021-09-06
      • 2021-11-23
      • 2015-11-09
      • 2019-09-13
      • 2023-03-28
      • 2018-09-25
      相关资源
      最近更新 更多