标签: laravel-5

如何在Laravel 5中捕获异常/缺失页面?

在Laravel 5,App::missing并且App::error是不可用的,那么怎么做你捕捉异常和缺页呢?

我在文档中找不到任何相关信息.

laravel laravel-5

59
推荐指数
2
解决办法
4万
查看次数

Laravel 5 - 所有模板中都提供全局Blade视图变量

我怎样才能在Laravel 5中制作全局变量,这些变量将在所有Blade模板中提供?

templates view laravel blade laravel-5

57
推荐指数
4
解决办法
7万
查看次数

Laravel Eloquent vs查询构建器 - 为什么要使用eloquent来降低性能

我在Laravel查询构建器和eloquent之间进行了一些性能测试.使用各种sql语句(select-update-delete-insert),查询构建器的速度要快得多.

所以我的问题是:为什么有人使用Laravel Eloquent来反对普通查询构建器?

mysql sql performance laravel laravel-5

57
推荐指数
6
解决办法
4万
查看次数

Laravel 5.6 - 用于自助API的Passport JWT httponly cookie SPA身份验证?

注意:我在这个问题上有4个赏金,但下面没有提出的答案是这个问题所需要的答案.所需的一切都在下面的Update 3中,只是寻找要实现的Laravel代码.


更新3:此流程图正是我想要完成的流程,下面的所有内容都是原始问题以及一些较旧的更新.该流程图总结了所需的一切.

下面的流程图中的绿色部分是我知道如何做的部分.红色部分及其旁注是我正在寻找帮助完成使用Laravel代码.

在此输入图像描述


我已经做了很多研究,但是当使用Laravel和JWT httponly cookie进行自我消费的API时,信息总是很短而且不完整(大多数在线教程只显示JWT存储在本地存储中,这不是很安全).看起来像包含JWT by Passport的httponly cookie应该用于识别Javascript端的用户,当每次请求发送到服务器以验证用户是否是他们所说的用户时.

还有一些额外的东西需要全面了解如何使这个设置工作,我没有在一个教程中遇到这个包括:

  1. Laravel Passport(不是tymon auth)生成加密的JWT并将其作为httponly cookie发送,作为从JS端登录后的响应.使用什么中间件?如果刷新令牌添加更多安全性,如何实现?
  2. JavaScript(例如axios)api伪代码,用于调用auth端点,如何将httponly cookie传递给后端,以及后端验证令牌是如何有效的.
  3. 如果从多个设备登录单个帐户,那么设备被盗,如何撤销所有authed用户设备的访问权限(假设用户从他们可以控制的登录设备更改密码)?
  4. 什么会登录/注册,注销,更改密码,忘记密码控制器方法通常看起来像处理令牌的创建/验证/撤销?
  5. CSRF令牌集成.

我希望这个问题的答案可以作为一个易于遵循的指南,为未来的读者和那些正在努力寻找一个自我消费API的上述观点的答案.

更新1:

  1. 请注意我尝试过CreateFreshApiToken之前的功能,但是在撤销用户令牌时这不起作用(上面的第3点和第4点).这是基于此评论的核心laravel开发商,谈论时CreateFreshApiToken中间件:

由此中间件创建的JWT令牌不会存储在任何位置.它们不能被撤销或"不存在".它们只是为您的api调用提供了一种通过laravel_token cookie进行authed调用的方法.它与访问令牌无关.另外:您通常不会在发布它们的同一个应用程序上使用客户发出的令牌.您可以在第一方或第三方应用中使用它们.使用中间件或客户端发出的令牌,但不能同时使用两者.

所以似乎能够迎合第3点和第4点来撤销令牌,如果使用CreateFreshApiToken中间件则不可能这样做.

  1. 在客户端,Authorization: Bearer <token>处理安全的httpOnly cookie 似乎不是一种方法.我认为请求/响应应该包含安全的httpOnly cookie作为请求/响应头,像这样基于laravel文档:

使用此身份验证方法时,默认的Laravel JavaScript脚手架指示Axios始终发送X-CSRF-TOKEN和X-Requested-With标头.

headerswindow.axios.defaults.headers.common = {
    'X-Requested-With': 'XMLHttpRequest',
    'X-CSRF-TOKEN': (csrf_token goes here)
};
Run Code Online (Sandbox Code Playgroud)

这也是我寻找涵盖上述所有要点的解决方案的原因.道歉,我使用的是Laravel 5.6而不是5.5.

更新2:

似乎密码授予/刷新令牌授权组合是要走的路.使用密码授予/刷新令牌授权组合寻找易于遵循的实施指南.

密码授予: 此授权适用于与我们信任的客户交易,例如我们自己网站的移动应用.在这种情况下,客户端将用户的登录凭据发送到授权服务器,服务器直接发出访问令牌.

刷新令牌授权: 当服务器发出访问令牌时,它还会为访问令牌设置到期时间.当我们想要在访问令牌过期时刷新访问令牌时,使用刷新令牌授予.在这种情况下,授权服务器将在发出访问令牌时发送刷新令牌,该令牌可用于请求新的访问令牌.

我正在寻找一个易于实现,直接,全面的答案,使用密码授予/刷新令牌授权组合,涵盖上述原始5点的所有部分与httpOnly安全cookie,创建/撤销/刷新令牌,登录cookie创建,注销cookie撤销,控制器方法,CSRF等

csrf-protection laravel cookie-httponly laravel-5 laravel-passport

56
推荐指数
4
解决办法
4238
查看次数

如何比较两个碳时间戳?

我有两个时间戳,我创建的edited_at和created_at(Laravel's)...在数据库中,两者都有类型时间戳和默认值0000-00-0000B 00:00 ...但是

var_dump(edited_at variable)正在给字符串.虽然var_dump(created_at variable)是对象/碳.这些时间戳有什么问题?

我必须在使用格式('U')转换为整数后比较两者.我只能在Carbon Object上调用这个方法.我怎样才能做到这一点?

laravel php-carbon laravel-5

55
推荐指数
2
解决办法
8万
查看次数

Laravel Blade通过@include传递带字符串的变量会导致错误

在Laravel 5.0.27中,我包含一个带有变量和以下代码的视图:

@include('layouts.article', [
        'mainTitle' => "404, page not found",
        'mainContent' => "sorry, but the requested page does not exist :("
    ])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误...

FatalErrorException语法...错误,意外','

我已经缩小了错误,只是来自"mainContent"变量字符串中的"("),当我删除"("错误消失,一切运行正常.我在文档中找不到任何内容或者在线列出的任何类似错误.

有谁知道这是预期的行为还是这是一个应该报告的错误?

非常感谢你的时间!

php laravel blade laravel-5

55
推荐指数
3
解决办法
7万
查看次数

Laravel模型事件 - 我对它们的目的地有点困惑

所以我看待它的方式是一个好的Laravel应用程序应该是非常模型和事件驱动的.

我有一个名为的模型Article.我希望在发生以下事件时发送电子邮件警报:

  • 创建文章时
  • 文章更新时
  • 删除文章时

文档说我可以使用模型事件并在boot()函数中注册它们App\Providers\EventServiceProvider.

但这让我感到困惑,因为......

  • 当我添加更多类似CommentAuthor需要完整的所有模型事件的模型时会发生什么?单一boot()功能EventServiceProvider是否绝对巨大?
  • Laravel的"其他"活动的目的是什么?为什么我真的需要使用它们,如果我的事件只会响应模型CRUD操作?

我是Laravel的初学者,来自CodeIgniter,因此试图绕着正确的Laravel做事方式.谢谢你的建议!

php laravel laravel-5

55
推荐指数
3
解决办法
3万
查看次数

Laravel 5 Resourceful Routes Plus中间件

是否可以将中间件添加到资源丰富路由的所有或部分项目中?

例如...

<?php

Route::resource('quotes', 'QuotesController');
Run Code Online (Sandbox Code Playgroud)

此外,如果可能的话,我想将所有路由放在一边indexshow使用auth中间件.或者这是否需要在控制器内完成?

routes laravel laravel-routing laravel-5 laravel-middleware

54
推荐指数
4
解决办法
5万
查看次数

为什么我必须运行"composer dump-autoload"命令才能使迁移工作在laravel中?

我在我的应用程序中构建了一些迁移类来创建我需要的表,但是我一直在收到错误.我需要运行这个命令:

composer dump-autoload

只有这样它才能按预期再次运作.我做错了会产生此错误,或者这是迁移的正常行为吗?

以下是运行迁移过程时出现的错误:

  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateVideoStatusTable' not found  
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5

53
推荐指数
3
解决办法
15万
查看次数

记录在哪里?

我正在调试JSON端点,需要查看内部服务器错误.但是,我的app/storage/logs目录是空的,似乎没有专门用于登录项目的其他目录.我试过谷歌搜索主题无济于事.

如何启用日志记录(如果尚未启用)并查看日志?

logging laravel laravel-5 laravel-5.2

53
推荐指数
2
解决办法
9万
查看次数