Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel只允许子域访问某些路由_Php_Laravel_Subdomain_Laravel 6 - Fatal编程技术网

Php Laravel只允许子域访问某些路由

Php Laravel只允许子域访问某些路由,php,laravel,subdomain,laravel-6,Php,Laravel,Subdomain,Laravel 6,我正在为房地产代理开发一个SaaS应用程序,他们可以在其中添加房屋/公寓,并在公共视图/url中列出它们。他们还可以添加自己的域/子域,以便拥有自定义的公共URL。问题是,因为我添加了与用户添加的域相关的别名,所以所有应用程序都可以通过这个新url访问。我想做的是只允许用户关注的属性的公共路由,并阻止其他URL 属性具有用户id和域id 问候拉威尔。如果您希望稍后使用子域或仅在路由文件中添加相关路由,则它应允许您捕获子域($account) Route::domain('{account}.my

我正在为房地产代理开发一个SaaS应用程序,他们可以在其中添加房屋/公寓,并在公共视图/url中列出它们。他们还可以添加自己的域/子域,以便拥有自定义的公共URL。问题是,因为我添加了与用户添加的域相关的别名,所以所有应用程序都可以通过这个新url访问。我想做的是只允许用户关注的属性的公共路由,并阻止其他URL

属性具有用户id和域id

问候拉威尔。如果您希望稍后使用子域或仅在路由文件中添加相关路由,则它应允许您捕获子域(
$account

Route::domain('{account}.myapp.com')->group(function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});
拉雷维尔有。如果您希望稍后使用子域或仅在路由文件中添加相关路由,则它应允许您捕获子域(
$account

Route::domain('{account}.myapp.com')->group(function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

但是如果我的用户没有配置任何子域呢?对不起,我没有意识到域也可能不同。在这种情况下,您最好创建一个。使用
$request->getHost()
获取中间件内部的完整域。如果它与您的域不匹配,那么您知道它是客户的域。如果是客户端域,则将其设置为允许请求,然后仅将该中间件应用于他们应有权访问的路由。@Maxime这实际上是一种很好的方法。您可以在自己的域下为每个客户端创建一个新的子域,并仅为每个客户端为此子域添加别名。@毫无疑问,我将尝试您的解决方案,因为它似乎是最好的。我需要在App/Http*Kernel.php中注册它,对吗?@Maxime,是的,没错。遵循上面的文档链接,这会让您很好地理解中间件,它是如何工作的,以及您可以用它做什么。但是如果我的用户没有配置任何子域呢?对不起,我没有意识到域也可能不同。在这种情况下,您最好创建一个。使用
$request->getHost()
获取中间件内部的完整域。如果它与您的域不匹配,那么您知道它是客户的域。如果是客户端域,则将其设置为允许请求,然后仅将该中间件应用于他们应有权访问的路由。@Maxime这实际上是一种很好的方法。您可以在自己的域下为每个客户端创建一个新的子域,并仅为每个客户端为此子域添加别名。@毫无疑问,我将尝试您的解决方案,因为它似乎是最好的。我需要在App/Http*Kernel.php中注册它,对吗?@Maxime,是的,没错。遵循上面的文档链接,这将使您很好地理解中间件、它是如何工作的以及您可以使用它做什么。