繁体   English   中英

如何仅在特定条件为真时启用特定路由访问?

[英]How can I enable a certain route access only when a certain condition is true?

目标

我试图根据我的.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 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 页面未找到,这很好。

LOGIN_PAGE=true

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

仅当特定条件为真时,如何启用特定路由访问?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM