在 Laravel 的自定义中间件中使用 session

2023-12-24

我有一个简单的中间件来检查用户会话中是否有密钥。

<?php

namespace App\Http\Middleware;

use Closure;

class CustomAuth
{
    public function handle($request, Closure $next)
    {
        if($request->session()->has('uid')){
            return $next($request);
        }
        else{
            return view('unauth');
        }
    }
}

问题是我总是收到“未根据请求设置会话存储”。错误。这是我的路线:

Route::get('home', function () {
        return view('home');
    })->middleware('web', 'CustomAuth');

我已在变量 $middleware 中的 app\Http\Kernel.php 中添加了中间件

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\CustomAuth::class
    ];

我也尝试将我的路线更改为:

Route::group(['middleware' => ['web']], function () {
    Route::get('home', function () {
        return view('home');
    })->middleware('CustomAuth');
});

但这没有用。知道如何确保会话已启动,或在调用中间件之前启动它吗?我正在使用 Laravel 5.3


L5 中间件由 3 个“类型”组成。

配置可以在Kernel.phpHTTP 请求的文件(通常App\Http\Kernel。有一个全局中间件将为所有请求运行并在中声明$middleware,有一个路由组中间件,它将针对给定路由组的所有请求运行,并在中声明$middlewareGroups,默认情况下声明的所有路由web.php被认为是web路由以便所有网络中间件都适用。

第三种是路由中间件。这些声明在$routeMiddleware数组形式"middlewareName" => Middleware::class并且可以用于任何路线,例如

Route::get("/route", function () { /* route body */ })->middleware("middlewareName");

它们按照全局>组>路由中间件的顺序运行,SessionStart中间件作为组中间件的一部分运行。任何其他需要访问会话的中间件都需要放置在SessionStart中间件。

澄清

当重新阅读本文时,这意味着您需要在$middeware变量来使用它们。事实并非如此,以下语法也是允许的:

Route::get("/route", function () { 
   /* route body */ 
})->middleware(Middleware::class);

但是,此语法不允许您在使用中间件时向中间件提供参数,就像使用身份验证中间件时那样auth:api (where api将是传递给中间件的参数)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Laravel 的自定义中间件中使用 session 的相关文章

  • MySQL LAST_INSERT_ID() 和 FOUND_ROWS()

    当 PHP 脚本每秒有数百个查询时会发生什么 它会影响这些函数吗 是否保证它们会返回当前脚本中最后一个插入语句中最后插入的 id 它会返回当前脚本中最后一次选择的行数吗 如果同时从另一个脚本进行新的插入或选择 在 FOUND ROWS 的情
  • 如何访问带有美元符号的 PHP 对象属性?

    我有一个 PHP 对象 其属性中有一个美元 符号 如何访问该属性的内容 例子 echo object gt variable Ok echo object gt variable WithDollar Syntax error With 变
  • 在同一服务器上的 2 个子域中安装 2 个 WordPress 时共享用户

    我有 2 个 WordPress 网站 位于 2 个不同的子域中 例如test1 abc com and test2 abc com 这两个网站都激活了 wp require 插件 只有登录用户才能看到该网站 我们想要创建一个系统 如果用户
  • CodeIgniter加入选择为

    我的数据库中有 2 个表需要加入 一张表是 artikelen 表 另一张表是 Collections 表 我目前有 this gt db gt select this gt db gt from collecties this gt db
  • php / phpDoc - @return $this 类的实例?

    如何在 phpDoc 中将方法标记为 返回当前类的实例 在下面的示例中 我的 IDE Netbeans 将看到 setSomething 始终返回foo object 但如果我扩展对象 情况就不是这样了 它会返回 this 在第二个示例中是
  • 确定 PHP 到目前为止执行了多长时间

    我需要确定 PHP 函数到目前为止已经运行了多长时间 有哪些选项可以确定某些 PHP 代码的运行时间 我正在使用 zend 框架 Call microtime true 函数以毫秒分辨率获取当前时间
  • Laravel 5 包中依赖注入的最佳方法

    我正在为 Laravel 5 开发一个包 现在我需要受益于依赖注入来拥有一个更具可扩展性和可靠性的应用程序 我不知道最好采用哪种方法以及为什么 这是我的一段代码 我需要注射Lang类依赖 class MyController extends
  • 统计数据库中的注册用户数

    我想反映在我的网站上注册的人数 只有我拥有的代码不起作用 它让我知道它不可能 转换为字符串 另外 当我将其设置为在 HTML 中调用的函数时 我收到 connection 未定义的错误 require once connect php sq
  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • WordPress 子主题覆盖父主题包括

    我正在创建 WordPress 子主题 需要覆盖某些小部件模板 我正在尝试使用此方法来覆盖父主题调用 覆盖主题功能的正确方法 http www venutip com content right way override theme fun
  • PHP cURL 看不到 /etc/hosts 文件

    我在让 PHP cURL 库识别我在我的文件中创建的别名时遇到了麻烦 etc hosts file 这就是我的 etc hosts现在归档 192 168 0 20 www example dev 在另一端 192 168 0 20 Apa
  • 即使在双引号内或使用 PHP_EOL,PHP echo 也不打印换行符

    这是一张照片剪辑 我认为它很清楚 这真让我抓狂 我似乎无法让 php 在我的本地主机 使用 xampp 或在线 PHP 解释器上打印换行符 如果你想在 php 中使用 HTML 标签 试试这个 echo dkljaks aalksja kl
  • 你可以拥有你的 API 并在 Laravel 中使用它吗?

    我制作了一个在 Laravel 中返 回 json 的 API 路线 api php 现在我想在我的内部使用所述APIweb项目的一侧 路线 web php 包括中间件 刀片视图 etc 我当前的解决方案是这样的 public functi
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 无法访问 WordPress 中声明的全局变量

    我有以下代码 g value something print g value function get value global g value print g value print get value 当我在独立的 PHP 脚本中运行它
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可

随机推荐

  • MySQL数据库变更跟踪

    您使用什么工具来跟踪 MySQL 数据库中的更改 目前 我所在的项目使用纯文本文件 通过 SVN 控制版本 在更改数据库时手动添加 SQL 语句 许多更改时不时就会神奇地消失 我们现在正在寻找更好的方法来更改跟踪我们的数据库 EDIT 我忘
  • CSS 类似表格的样式

    I want to create the following table like element in my page 我曾经使用过 table table 标签 但现在我将所有网站切换为 CSS 并且使用 DIV 等 我想知道实现这种元
  • 嵌入式 powerbi 报告未显示移动视图

    我们创建了一个包含桌面版本和移动版本的 PowerBI 报告 当我们在输入正确的信息后在以下示例站点进行测试时 它会正确显示桌面和手机视图 https microsoft github io PowerBI JavaScript demo
  • appium 的此会话问题不支持定位器策略“css 选择器”

    由于我是移动自动化的新手 我一直在尝试使用 appium maven 和 eclipse 运行简单的活动 但是 当我尝试运行计算器应用程序时 它会打开 但元素无法访问 这是我用来运行一个简单计算器的代码 BeforeClass public
  • Makefile 匹配任何目标/任务

    我想编写一个可以与任何任务一起运行的 makefile 并且只需回显所有任务名称 有什么办法可以做到这一点吗 Like echo 假设您的 make 是 GNU make 或类似的 make 请使用以下 Makefile PHONY all
  • 检查表A中的条目是否存在于表B中

    我有一个定义表 我知道它维护得不是很好 我们称之为table A 我还有另一张桌子 称之为table B 要小得多 理想情况下应该是subset of table A但我知道table A有点陈旧并且不包含新条目Table B 请注意 表
  • 如何将Python中存储在变量中的两个整数相除?

    我有两个数字存储在变量 a 和 b 中 我想看看这两个数字的比率在 python 中是否是整数 然而当我尝试时 result a b 它给了我一个 SyntaxError invalid syntax 但是如果我说 result a b 它
  • 将上传的图像保存到 localStorage(chrome 扩展)

    我无法确定如何将用户在我的选项页面中输入的上传图像存储在 localStorage 中 没有太多关于如何做到这一点的文档 因为有一段时间它是一个已知错误 https bugs chromium org p chromium issues d
  • 在 Phoenix 应用程序中设置异常的自定义响应

    我正在使用 ecto 编写 phoenix 应用程序 并在测试中包含以下代码片段 ok data Poison encode email email protected cdn cgi l email protection password
  • 在精灵中使用徽标标签是好是坏?

    在构建网页时 我的一位同事使用 CSS 背景图像属性显示任何徽标 而不是使用 HTML 嵌入图像 img 标签 同事报告说这是为了减少 HTTP 请求的数量 他还向我展示了图像精灵 http www google co in images
  • Perl 6 中什么时候“race”是值得的?

    race https docs perl6 org routine race自动将可迭代对象上的操作划分为线程 例如 Bool roll xx 2000 race sum 会自动将 2000 长数组的总和分成 4 个线程 然而 基准测试显示
  • 使用 PHP Composer 克隆 git 仓库

    我正在尝试使用composer http getcomposer org 自动从 github 克隆一个不在其中的 git 存储库包装主义者 https packagist org 但它不起作用 我不知道我做错了什么 我想我必须将它包含在
  • 为什么 MethodChannel.Result.success() 有时会导致 Flutter 超时?

    我有一个简单的 Flutter 插件 通过MethodChannel以及一些原生 Android 代码 这是插件提供的方法的一个简单示例 Future
  • NuxtServerInit:添加 Google-Tag-Manager 脚本作为正文的标题

    我使用一个 nuxt 实例来为多个使用不同语言的域提供服务 对于每个域 我使用不同的 Google 跟踪代码管理器帐户 在 nuxtServerInit 中 我将主机名和 Google 跟踪代码管理器 ID 添加到存储中 现在我正在寻找一种
  • 语法突出显示/着色猫

    有没有一种方法可以对输出进行着色cat 道路grep does For grep 在大多数控制台中 它会显示彩色输出 突出显示搜索到的关键字 否则 您可以通过调用强制它grep color是否有一种通用方法可以根据您的个人选择为任何程序的输
  • ProgressBar 作为 DataGridView 行的背景

    是否可以将 ProgressBar 设置为 DataGridView 行的背景 或者仅从左到右对行的一部分进行着色 我有一些行代表一些动态变化的数据 我需要以某种方式显示该进度 我想使用整行背景作为进度条 我该怎么做 如果您想使用整行 最好
  • 如何根据值合并两个字典列表

    我有两个字典列表 可以说 a id 1 name a b id 1 city b 我想要一个列表 将两个列表中具有相同 ID 的每个字典合并 在这个例子中我希望有 a id 1 name a city b 除了将 for 嵌套到另一个中之外
  • 有没有一种很好的 Play2 方法可以用 Guice 在 Play 插件中注入实例

    我正在尝试弄清楚如何将我的类与 Google Guice 注入到 play api Plugin 中 我已经实现了 Guice 来与我的控制器一起工作 并且效果很好 I use com google inject guice 4 0 bet
  • 使用curl和get_meta_tags()获取元标签信息

    有没有一种方法可以使用curl来执行与php中的get meta tags 函数等效的操作 专门用于在 php 中使用curl 以尽可能少的开销获取外部站点的元标记 function file get contents curl url c
  • 在 Laravel 的自定义中间件中使用 session

    我有一个简单的中间件来检查用户会话中是否有密钥