Php 身份验证中间件将请求类型从POST更改为GET
我在每个页面上都有一个带有模型的简单评论表单。该表单对于未登录的用户可见 当未登录的用户提交注释时,请求被Php 身份验证中间件将请求类型从POST更改为GET,php,laravel,routes,middleware,laravel-5.3,Php,Laravel,Routes,Middleware,Laravel 5.3,我在每个页面上都有一个带有模型的简单评论表单。该表单对于未登录的用户可见 当未登录的用户提交注释时,请求被auth中间件捕获 表单操作是注释 {!! Form::open(array('url' => 'comments', 'method' =>'post', 'role'=>'form', 'class'=>'')) !!} 我的路由文件中定义了资源路由: Route::resource('comments','CommentsController') 成功登录后,
auth
中间件捕获
表单操作是注释
{!! Form::open(array('url' => 'comments', 'method' =>'post', 'role'=>'form', 'class'=>'')) !!}
我的路由文件中定义了资源路由:
Route::resource('comments','CommentsController')代码>
成功登录后,用户将被重定向到注释
,但问题是:
问题
用户被重定向到控制器的索引
方法。
中间件似乎将请求类型从POST
重置为GET
这个问题在过去和最近的Laravel 5.3中都存在
相关Laravel文件
我的问题
这种行为是“一种特性”,还是我应该在Laravel中报告一个bug
我的修补程序
我将表单标题中的url定义更改为comments/create
,并在资源上方添加了一个新路由。但这看起来不像一个优雅的决议
有什么想法吗?这不是一个bug,
用户成功登录后,用户将被重定向回“评论”。
重定向实际上是一种GET方法,不能使用POST方法重定向
此链接将支持您不能在重定向中使用POST,
您可以使用session存储以前的POST值,并在它不是bug之后保存它,
用户成功登录后,用户将被重定向回“评论”。
重定向实际上是一种GET方法,不能使用POST方法重定向
此链接将支持您不能在重定向中使用POST,
您可以使用session存储以前的POST值,并将其保存在“您不能使用POST方法重定向”之后,因此它不是与Laravel相关的功能,而是PHP的工作原理?似乎唯一的解决方案是建立一个额外的路由来处理评论提交请求是的,这就是重定向的工作原理(只获取)你可以为重定向建立一个额外的路由,或者在登录控制器中编写额外的代码来保存评论如果你真的想拥有这个无缝的帖子,你可以,截取并捕获帖子内容,将其重定向到登录,重定向回评论,并使用捕获的帖子数据继续提交。它很凌乱,但应该可以工作。“您不能使用POST方法重定向”
,因此它不是一个与Laravel相关的功能,而是PHP的工作原理?似乎唯一的解决方案是建立一个额外的路由来处理评论提交请求是的,这就是重定向的工作原理(只获取)你可以为重定向建立一个额外的路由,或者在登录控制器中编写额外的代码来保存评论如果你真的想拥有这个无缝的帖子,你可以,截取并捕获帖子内容,将其重定向到登录,重定向回评论,并使用捕获的帖子数据继续提交。这很混乱,但应该可以用。为什么不让用户先登录,然后再发表评论呢?可能禁用注释文本框/区域,然后使用“登录到注释”按钮。通过让他们在能够真正写评论之前登录,您将省去这样的麻烦,您可以始终使用ajax发挥一些魔力,并弹出一个引导模式(假设您使用的是引导模式),要求用户登录或发表评论,一旦ajax让用户登录,提交表单时不会丢失用户输入的任何数据。为什么不让用户先登录,然后再发表评论?可能禁用注释文本框/区域,然后使用“登录到注释”按钮。通过让他们在能够真正写评论之前登录,你将省去这样的麻烦。你可以使用ajax使用一些魔法,并弹出一个引导模式(假设你使用的是引导模式),要求用户登录或发表评论。一旦ajax登录用户,提交表单时不会丢失用户输入的任何数据。