我有一个laraval项目与react应用程序在同一个项目中,在运行react应用程序之前,我有许多中间件,检查一些授权,如如果一个国家被授权访问与否:
Route::middleware(['firewall.country', 'firewall.ip'])->group(function () {
Route::get('/{any}', function () {
return view('app');
})->where('any', '^(?!api).*$');
});
现在我需要从laravel项目中单独部署react front,我的问题是如何让这个中间件在react应用程序之前保持运行。
2条答案
按热度按时间zwghvu4y1#
您可以在Laravel中添加一个中间件来检查授权并重定向到react应用。然后,您可以在Laravel中添加一个新路由来服务react应用。如果授权失败,Laravel可以返回一个带有错误消息的响应。
在Laravel中创建新中间件:
在中间件的handle方法中添加用于检查授权的代码:
将中间件添加到app/Http/Kernel.php的全局中间件列表中:
在Laravel中添加一条为react应用提供服务的新路线:
创建一个新视图以提供react应用,例如react.blade.php,并将react应用包含在视图中:
现在,当react应用被访问时,CheckAuthorization中间件将首先运行,并检查用户是否被授权,如果用户未被授权,Laravel将返回错误消息,如果用户被授权,则react应用将被服务。
xmd2e60i2#
要使用laravel作为代理,您可以这样做:
但这是一个坏主意,更好的方法是像这样改变你的laravel端点:
然后在react应用中: