【问题标题】:add control to resource routes添加对资源路由的控制
【发布时间】:2017-02-10 18:27:28
【问题描述】:

我的资源路径如下:

$router->resource('subnets', 'subnetController');

我在文档中看到资源路由可以有一组参数...是否有一个参数允许您选择谁可以访问这些路由?如果我使用的是基本路由,则类似于:

Route::get('/subnets', function () {
   if (Auth::user()['attributes']['role'] == 'admin') return view('subnets.index');
   else return view ('errors.403');
});

【问题讨论】:

  • 你应该看看中间件的实现:laravel.com/docs/5.3/middleware
  • 正如之前的评论所提到的,您可以制作一个中间件来进行检查,并可以在控制器中或通过路由定义它。

标签: laravel laravel-5.1 laravel-routing


【解决方案1】:

你应该使用中间件..

  1. 创建中间件> https://laravel.com/docs/5.3/middleware
  2. 将其写入处理程序中间件
public function handle($request, Closure $next)
    {
        if ($request->user()->role == 'admin') {
             return $next($request);
         }
         abort(403, 'Access denied');
    }
  1. routes.php
  Route::group(['middleware' => 'your_middleware_name'], function () {
      Route::resource('subnets', 'subnetController');
     });

【讨论】:

  • Route::group() 是我所缺少的......谢谢!
猜你喜欢
  • 2014-02-18
  • 2014-10-08
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多