我是Laravel框架的新手。我添加了30天免费试用功能。在免费试用结束时,系统会要求用户升级会员资格。如果用户尝试登录30天后,他将自动重定向到升级页面并登录。他已登录,以便可以确定升级哪个用户的升级。但登录后,他目前在升级页面上,可以导航到任何页面。
我只是想要,如果尝试导航到其他页面,那么他应该被重定向到升级页面。
为此,我可以将检查和重定向代码添加到每个路由和控制器操作,但我不想这样做。有没有其他方法可以执行此任务,我只需要编写一次检查,它将适用于所有页面。
这是我的支票代码:
if($settings->free_registration && Auth::user()->role =='registered')
{
$user = User::find(Auth::user()->id);
$create_date = strtotime($user->created_at);
$current_date = strtotime(date('Y-m-d h:i:s'));
$datediff = $current_date - $create_date;
$date_difference = $datediff / (60 * 60 * 24);
$user_name = $user->username;
if($date_difference > 30){
return Redirect::to('user/'.$user_name.'/upgrade_subscription')->with(array('note' => 'Your trial period has ended', 'note_type' => 'error'));
}
}
答案 0 :(得分:1)
您可以在此处使用中间件。将所有“试用检查”代码放入中间件并将所有路由分组,除了登录此中间件。希望这会成功。
看看:
答案 1 :(得分:0)
您可以使用Middleware:
当然,可以编写其他中间件来执行各种操作 除身份验证之外的任务CORS中间件可能是 负责为所有回复添加正确的标题 你的申请。日志记录中间件可能会记录所有传入的请求 到你的申请。
您的中间件会检查用户是否拥有有效的许可证,并在其他地方重定向,如果不是这样的话。
答案 2 :(得分:0)
您可以将代码放在名为CheckSubscription
的中间件提供程序中,并使用app/Http/Kernel.php
文件下的别名将其注册到应用程序。
protected $routeMiddleware = [
//other middlewares
'subscription' => \App\Http\Middleware\CheckSubscription::class,
]
根据您设置routes
文件的方式(白色Route::group
)或者如果您在课程中使用__constructor
来检查中间件,您可以注册您提供的别名
有关Laravel Middleware的更多信息,请点击此处。希望它有点清楚!