问题标签 [laravel-middleware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 在 Laravel 中使用 PHPUnit 测试 HTTP 动词时遇到问题
在开始之前,我想说我已经看过Failed asserting the HTTP status is 200 not 500以及Failed asserting the HTTP status code is 200 not 500。不要让名字欺骗你;他们是2个不同的职位。这两个帖子都超过 9 个月,没有好的答案。
我在测试路线时遇到了一些麻烦。所以,我Laravel 5
在我的 Mac Mini 上创建了一个新项目,正在运行OS X Yosemite 10.10.2
. 我正在制作一个 API。所以,我首先开始制作 API 的后端部分。我决定我想用它PHPUnit
来为这个项目实现 TDD。我的版本PHPUnit
是4.0.20
. 我正在运行PHP 5.5.14
,并且正在使用命令行工具Laravel
中打包的服务器。artisan
现在,我开始确保我可以连接到服务器。所以,我的第一个测试看起来像:
这通过就好了。但是,当我转到 POST 请求时,它失败了。这是我的第二个测试的样子:
此测试失败。这是输出的样子:
在我的 routes.php 文件中,我确实注册了这条路线:
在我的 MessagesController 中,我拥有所有必需的方法:
所以,目前,不管 HTTP 动词是什么,我都应该得到'response'
. 现在,我决定用 curl 验证测试:
这将返回 Laravel '哎呀!页。所以确实存在某种服务器错误,但我不确定要寻找什么。应用程序流程看起来不错,但显然无法正常工作。这是我的 Laravel 日志中的堆栈跟踪:
我对 Laravel 很陌生,所以我不确定如何真正深入研究并使用堆栈跟踪来找出问题所在。我也尝试过没有Route::resource
,但这并不能缓解我的情况。我的 GET 仍然可以正常工作 ( Route::get
),但我的 POST ( Route::post
) 仍然出现同样的 500 错误。.../compiled.php 中包含第 2375 行的函数(来自堆栈跟踪顶部抛出的异常)由 Laravel 生成,如下所示:
那时,我尝试编辑 POST 测试,因为我实际上并没有发送任何数据。所以这是我修改后的第二个测试:
我收到相同的错误消息。我觉得我错过了一些简单的东西,但我无法弄清楚。任何帮助将不胜感激。
laravel-5 - Laravel 5:无法将数据从中间件传递到控制器
我正在向控制器发送带有 GET 方法的 ajax 请求
中间件:
在 HomeController 的 index() 方法中,我试图返回 $request 但页面抛出错误
我只是返回$request
HomeController
如何将请求变量传递给 HomeController@index 以便我可以继续处理?我厌倦了尝试各种方法...
php - Laravel 中间件,除了 Route::group
我正在尝试为管理部分创建一个组路由,并将中间件应用于除登录和注销之外的所有路径。
到目前为止,我所拥有的是:
如何使用上述设置为中间件声明异常?
laravel - Laravel 5 资源丰富的路由加中间件
是否可以将中间件添加到资源丰富的路线的全部或部分项目中?
例如...
此外,如果可能的话,我想将所有路由都放在中间件之外index
并show
使用auth
中间件。或者这是需要在控制器内完成的事情?
laravel - Laravel 5 - 将中间件分配给控制器命名空间
在允许访问 Laravel 5 网站的管理面板之前,我需要对用户进行 ACL 检查。对命名空间中的整个控制器组执行此操作的最佳方法是什么App\Http\Controllers\Admin\*
?最终,我正在寻找一种“一劳永逸”的方法来做到这一点,而中间件看起来是迄今为止最好的选择。
最初的想法是为管理路由分配一个中间件,但这并不妨碍任何其他非管理路由访问控制器。这意味着路由仍然可以针对管理控制器并绕过 ACL 检查。
下一个想法是在控制器的构造函数中插入赋值,但这需要每个额外的控制器显式包含中间件。这将要求开发人员知道应该包含中间件,这使他们完全错过了它。这也适用于使用一个基本控制器作为所有管理控制器的父级,因为开发人员需要知道应该扩展基本控制器。现在,这看起来是最好的解决方案。
这让我们回到了这个问题:中间件可以分配给控制器通配符命名空间App\Http\Controllers\Admin\*
吗?或者,是否有更好的方法让 ACL 检查永远不需要明确分配给每个管理控制器?
laravel - Laravel 中间件永远重定向
有人可以帮我解决中间件吗?我得到了一个无休止的重定向,这让我疯狂了一个星期。
好的,刚刚再次更新了代码,但仍然存在永远重定向任何想法的问题?
php - 我可以使用 Laravel 5 中间件来允许包覆盖应用程序路由吗?
我希望能够用包中的路由覆盖 app/Http/routes.php 中定义的路由。
例如,在 app/Http/routes.php 我可能有这个:
我希望能够在 /vendor/author/package/src/Http/routes.php 中定义它:
app/Http/routes.php 文件首先加载,因此使用其中的路由,而不是包。
在 Laravel 4 中,我会使用 App::before 或 App::after 来执行此操作,并给予它们优先级。
就像在包路线中一样:
我不知道如何在 Laravel 5 中实现这一点。我找到了这个https://mattstauffer.co/blog/laravel-5.0-middleware-filter-style,但不知道如何用它来做我想要的.
编辑:Laravel 4 这样做的方式将允许为每个路由设置此优先级,所以我不只是在应用程序之前加载所有包路由。
routing - In Laravel 5 how do I implement an App::before() filter?
In Laravel 4.2 I had this before filter that set the Eloquent model and table based on the URL (admin.example.com vs example.com)
Here is my filter code:
I tried creating middleware for this in laravel 5 and have this code:
In my routes.php file I am setting the controller that is called based on the auth.model setting like this:
What I found is that the routes are all read prior to the middleware so the change I am trying to make through Config::set() isn't happening. I am only getting the value that is set in the auth.php config file.
What am I doing wrong and how should I do this in Laravel 5?
laravel-5 - Laravel 5 中间件
嗨,我正在使用 Laravel 5 的中间件,我正在做的是我有几个控制器中使用的中间件,我的每个控制器都有自己的配置,我需要传递我的中间件,我该怎么做?
laravel-5 - 暂时禁用/绕过中间件
在我的应用程序中,我结合了自定义身份验证包(Cartalyst 的 Sentinel )实现了 OAuth2-Server( oauth2-server-laravel)。
在我的 routes.php 中:
因此,请求必须提供授权标头,否则应用程序会以 OAuthException 退出。
现在我想对我的控制器进行单元测试。所以我必须为我的数据库添加一个 OAuth 会话和每次测试的访问令牌。然后用 Bearer Token 覆盖call()
-methodTestCase
并设置 HTTP-Authorization Header。
有没有办法禁用或绕过中间件(在我的情况下仅用于单元测试)?
在 Laravel 4 中,它们被称为路由过滤器,无论如何它们在测试环境中都被禁用了。您也可以使用 . 手动启用/禁用它们Route::enableFilters()
。