Laravel在满足条件时允许用户访问特定路线

时间:2018-10-20 00:11:08

标签: laravel routes conditional-statements access

Laravel 5

在满足某些条件时如何授予用户访问特定路由的权限?

例如,让用户访问

Route::get(view('posts/{id}'),'PostsController@show');

当用户的“用户”->“积分”列中的积分超过100时。

1 个答案:

答案 0 :(得分:1)

您可以使用Middleware,在Laravel中,通过创建自己的中间件来保护路由非常容易。

需要执行以下步骤:

  1. run command php artisan make:middleware Middlewarename,您将在app/Http/Middleware/yourcustomemiddleware.php
  2. 中找到中间件
  3. 在您刚刚创建的app/Http/kernel.php文件中注册中间件
  4. 现在在刚创建的中间件中实现逻辑:

您的MiddlewareClassCode:

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if (Auth::user()->points >= 100)
    {

        return $next($request);

    }

    return redirect()->back()->with('flash_message','you are not allowed to access this');
}
  1. 将中间件附加到您的路由:

routes / web.php:

Route::get(view('posts/{id}'),'PostsController@show')->middleware('yourcustommiddleware');

现在您的路线已全部完成。

摘要::中间件中的此语句return $next($request);将在条件匹配时返回路由,否则它将重定向到先前的路由。

注意:我不知道您的数据库结构,这只是一个示例,向您展示什么是中间件,中间件如何工作以及如何使用它。

相关问题