如何在特定条件为真时启用某个路径访问?

时间:2017-09-21 15:46:51

标签: php laravel laravel-5 laravel-5.1 laravel-routing

目标

我正在尝试使用.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页面,这是好的。

LOGIN_PAGE=true

我进入我的登录页面,我仍然找不到404页面,这是不好的。我应该看到我的登录页面。

我忘记了什么?怎么会去和#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页面,这是好的。

LOGIN_PAGE=true

我进入我的登录页面,我仍然找不到404页面,这是不好的。我应该看到我的登录页面。

我忘记了什么?只有当某个条件成立时,如何进行并启用某个路径访问?

任何提示/建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

您要问的最佳做法是定义一个可以在任何需要的地方重用的中间件:

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