强制Route :: group(['domain'=>'external.com'])返回https前缀的路由

时间:2019-12-16 10:13:34

标签: laravel laravel-6

我创建了一个名为external.php的新路线定义。

它是这样的:

Route::group([
    'domain' => 'example.org'
], function () {
    Route::post('oauth/token')->name('external.oauth.token');

这很好,所以php artisan route:list包含:

| example.org | POST     | oauth/token                | external.oauth.token            | Closure                                                 |                       |

如果我做route('external.oauth.token'),我会得到以下结果:

"http://example.org/oauth/token"

所以我的问题是:如何强制使用https前缀的路由安全?

1 个答案:

答案 0 :(得分:1)

您可以强制这组路由安全:

Route::group(['domain' => ..., 'https'], function () {
    ...
});

或者仅是一条路线:

Route::post('oauth/token', ['uses' => ..., 'https'])->name('external.oauth.token');

对于实际的外部URL,您可能只需将此URL添加到配置文件中,然后按名称使用助手即可访问它。

config/urls.php

<?php

return [
    'external' => [
        'oauth' => [
            'token' => 'https://example.org/oauth/token',
        ]
    ],
];

Helper方法:

function urls($name)
{
    return config('urls.'. $name);
}

需要的地方:

$url = urls('external.oauth.token');

您可以根据需要命名方法,配置和键,这只是一个与您使用的名称匹配的想法。