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

Force Route::group(['domain'=>'external.com']) to return https-prefixed routes

我创建了一个名为 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"

所以我的问题是:如何强制路由为 secure/with https 前缀?

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

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',
        ]
    ],
];

辅助方法:

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

需要的地方:

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

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