【问题标题】:How can I enable a certain route access only when a certain condition is true?如何仅在特定条件为真时启用特定路由访问?
【发布时间】:2018-03-03 01:22:47
【问题描述】:

目标

我正试图根据我的.env 文件的标志来阻止我的主登录页面。 我不确定这是否是正确的方法。


步骤

在我的.env 我已经添加了

LOGIN_PAGE=true

然后在我的路由文件中

我补充说如果检查

if(env('LANDING_PAGE') == true){

    Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']);
    Route::post('/', 'AuthController@postSignIn');
}

结果

LOGIN_PAGE=fasle

我去我的登录页面,我得到了 404 Page not found 这很好。

LOGIN_PAGE=true

我去我的登录页面,我仍然得到 404 Page not found 这不好。我应该会看到我的登录页面。

我忘记了什么?一个人会怎么做和#GOAL

我正在尝试根据我的.env 文件的标志来阻止我的主登录页面。 我不确定这是否是正确的方法。


步骤

在我的.env 我已经添加了

LOGIN_PAGE=true

然后在我的路由文件中

我补充说如果检查

if(env('LANDING_PAGE') == true){

    Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']);
    Route::post('/', 'AuthController@postSignIn');
}

结果

LOGIN_PAGE=fasle

我去我的登录页面,我得到了 404 Page not found 这很好。

LOGIN_PAGE=true

我去我的登录页面,我仍然得到 404 Page not found 这不好。我应该会看到我的登录页面。

如何仅当某个条件为真时才启用某个路由访问?

【问题讨论】:

  • 在您的 .env 中,您有名为 LOGIN_PAGE 的设置,但在您的路线中,您正在检查 LANDING_PAGE。

标签: php laravel laravel-5 laravel-routing


【解决方案1】:

您所要求的最佳实践是定义一个可以在您需要时随时随地重复使用的中间件:

php artisan make:middleware CheckIsLandingPage

然后定义中间件背后的逻辑

<?php

namespace App\Http\Middleware;

use Closure;

class CheckIsLAndingPage
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // your logic here 
        if (env('LANDING_PAGE') == true) {
           return redirect('somewhere');
        }

        return $next($request);
    }
}

在 Laravel 文档中阅读更多内容: https://laravel.com/docs/5.1/middleware#defining-middleware

在最新的 5.5 中没有太大变化: https://laravel.com/docs/5.5/middleware#defining-middleware

【讨论】:

  • 我使用的是 laravel 5.1。我还将我的帖子标记为5.1 - 请更新您的答案以与此相关。
  • 他已链接到 5.5 文档,但您在 5.1 中执行的操作完全相同。 laravel.com/docs/5.1/middleware#defining-middleware
  • 不要在配置文件以外的任何地方使用 env。它不会正常工作。在配置中使用 env,然后在任何你想要的地方使用配置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多