在函数中使用 Config::set() 两次的方法

2024-03-02

我已经用谷歌搜索和 stackoverflowed(如果可以的话)来解决这个问题,但找不到足够简洁的答案:(一些参考文献:Laravel 4:当使用 Config::set 更改 auth.model 时,Auth::user() 不起作用 https://stackoverflow.com/questions/23848397/laravel-4-when-using-configset-to-change-auth-model-then-authuser-not-wor , Laravel 5.2 如何在中间件中使用 config::set https://stackoverflow.com/questions/38638237/laravel-5-2-how-to-use-configset-in-middleware)

如何在运行时成功设置变量两次Config::set()在 Laravel 5.2.* 中?

这是我试图实现的目标的示例:

我有两张桌子companies and users(他们都使用 JWTAuth 从不同的路由登录)。现在我想获取所有computers在此单一路线上进行记录Route::get('/computers')

现在的问题是我想使用相同的中间件这样做,但是我想确保这些用户(即公司或用户)在访问此资源之前经过身份验证

这是我尝试使用的Config::set()在我的中间件中:

//all.auth middleware
public function handle($request, Closure $next)
{
    Config::set('auth.providers.users.model', \App\Company::class);
    Config::set('jwt.user', \App\Company::class);

      //check if the request is for company
    if($company = JWTAuth::toUser(($request->has('token')) ? $request->token : $request->bearerToken())) 
    {
        return ['COMPANY' => $company];
    }

    //Unfortunately its not company, lets try users

    Config::set('auth.providers.users.model', \App\User::class);
    Config::set('jwt.user', \App\User::class);

    if($user = JWTAuth::toUser(($request->has('token')) ? $request->token : $request->bearerToken())) 
    {
        return ['USER' => $user];
    }
    throw new NotFoundHttpException('Your account could not be found.');
    ...............
}

现在,我注意到的行为是它成功更改了 JWT 将用于的模型Company但没有将其更改为User如果随请求发送的令牌是针对User.

如果有人可以提供帮助,至少了解这是否可能,我将不胜感激。

如果需要提供更多解释,我愿意这样做。


多次设置配置值可以按预期工作。您的代码无法按预期工作的原因是该代码背后的服务JWTAuth外观仅在您第一次访问它时使用这两个配置参数的当前值解析一次。稍后更改不会有任何影响。

为了实现你想要的,你需要让 Laravel 服务容器使用新的配置值重新创建服务。为此,您需要做两件事。

首先,从外观中删除已解析的实例,以便下次使用它时,它可以从服务容器中获取服务的新实例:

JWTAuth::clearResolvedInstances();

然后从容器中删除服务实例,以便需要使用新的配置值再次创建它:

App::forgetInstance('tymon.jwt.auth');

设置新的配置值后以及下次使用时添加这两行JWTAuth外观它应该使用新的设置。

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

在函数中使用 Config::set() 两次的方法 的相关文章

  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • PHP:读取字体文件的 TrueType/OpenType 元数据

    如何阅读字体详细信息 例如 字体在其元数据中包含版权 姓氏 设计者 版本等信息 我还希望脚本能够计算文件中的字形数量 并返回字体支持的语言 例如 典型的字体可能包含西方语言 瑞典语和罗马语言支持 并具有数百个字形 它应该支持 truetyp
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 在哪里存储角度中的 JWT 令牌?

    我正在使用 Django 和 Angular 构建一个应用程序 目前 我正在本地存储上存储后端发出的 JWT 但是 我担心 XSS 攻击 我应该使用仅 HTTP 的 cookie 来存储令牌吗 我还考虑将令牌存储在我的身份验证服务类中的变量
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 这个条带请求是什么?为什么它会多次触发?

    对于使用 stripe 的 Laravel 应用程序 此请求https r stripe com 0被解雇多次 如下所示 我刷新主页后 这些请求立即被触发 问题是我最近得到了一个429 too many requests我的实时服务器出现错
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定

随机推荐

  • 设置 NSStreamNetworkServiceTypeBackground “幕后作用”是什么?

    我有一个内部应用程序 不适用于 iPhone 商店分发 因此不受 Apple 批准 它需要在运行时保持少量 TCP 和 UDP 套接字绑定 在测试时 我注意到我的绑定套接字有一些奇怪的行为 只要设备进入睡眠状态 它就会关闭 例如 当您按下手
  • 设置为 Theme.NoTitleBar.Fullscreen 后应用程序崩溃

    如果我不取消标题栏 我的应用程序就会启动 但是当我取消标题栏时 它一启动就会崩溃 这是我到目前为止的代码 xml version 1 0 encoding utf 8 gt
  • 在 Angular 7 中使用 getElementById 在 DOM 元素上应用指令

    我有一些由第三方 plotly 生成的 HTML 我很想在它创建的 DOM 元素之一上应用我们已有的指令 该指令在单击时打开一个 colorPicker 并将颜色设置为字符串 我可以通过以下方式到达元素querySelector or ge
  • 英特尔 MKL 错误:参数 6 输入时不正确

    我收到以下错误 Intel MKL ERROR Parameter 6 was incorrect on entry to DGELSD 在 scipy 上运行 Savitzky Golay 过滤器时 函数scipy signal savg
  • 测试 IntegrityError UNIQUE 约束失败

    我对电子邮件和商店有一个 unique together 约束 我使用以下代码来测试唯一约束 我期望通过assertRaise 测试 但结果显示相反 我在这里缺少什么 from django db backends sqlite3 base
  • 散景,仅在单个轴上缩放,相应地调整另一个轴

    如何使散景仅在一个轴上使用缩放并自动缩放对象 以便它们精确地占据给定的空间 并在可缩放轴平行的极值点上添加一些填充 同时将空白空间渲染到范围之外 换句话说 准确地说是 疯狂技能 示例图 https i stack imgur com I3j
  • 仿函数调用和函数调用的详细区别?

    这样做的关键原因是 for each 实际上并没有假设它的第三个参数是一个函数 它只是假设它的第三个 论证是可以的 用适当的参数调用 A 适当定义的对象也可以 作为 而且往往比 更好 功能 例如 更容易 内联应用程序运算符 类而不是内联传递
  • 如何从 Visual Studio 中调试 IIS 上的两个 Web 应用程序/服务?

    在 Visual Studio 2010 中 我想同时调试在 IIS 上运行的两个 Web 应用程序 调试第一个应用程序时一切正常 但是当开始调试第二个应用程序且第一个程序仍处于调试模式时 Visual Studio 会提示 无法在 Web
  • 通过指定坐标检索 html 控件

    如何仅通过指定触发事件的坐标来获取 html 控件的 id 例如onmousedown onmouseup onclick ETC 坐标可以通过以下方式获得 e clientX e clientY其中 e 是事件对象 这个想法是获取在其上完
  • Chrome 不允许 cookie 过期时间少于 4 小时

    我似乎无法在 Google Chrome 中设置寿命较短的 cookie 它们要么没有被设置 要么立即被删除 无法分辨是哪一个 尽管两种方式的结果都是相同的 仅当未来到期时间为 4 小时或更短时 才会发生这种情况 如果过期时间大于 4 小时
  • 如何在 Extjs 4.1 中使用 treecombo

    我找到了导师http www sencha com forum showthread php 198856 Ext ux TreeCombo http www sencha com forum showthread php 198856 E
  • 验证一组对象是否已正确映射

    我正在寻找一套干净的管理方法测试特定的相等性 http blog ploeh dk 2012 06 22 Test specificEqualityversusDomainEquality in F 单元测试 90 的时间里 标准结构平等
  • 在哪里下载 MySQLdump.ext 比 mysqldump.exe 版本 5.7.1.7 更新的版本

    尝试通过 MySQL Workbench 转储简单数据库 方法是单击 服务器 gt 数据导出 gt mydb gt 开始导出 获取消息 mysqldump 版本不匹配 该消息显示这些版本 mysqldump exe 版本 5 7 1 7 M
  • 如何让我的 Yubikey 在 Windows 10 中与 SSH 配合使用?

    在出于技术兴趣购买了 Yubikey 5 NFC 固件 5 2 7 并尽可能设置 FIDO2 身份验证后 我遇到了无法再通过 SmartGit 连接到我的 GitLab 服务器的问题 因为没有请求第二个因素 因此我无法连接到服务器 然后我决
  • Neo4j gem - 处理管理关系的首选方法

    这主要是一个设计 效率问题 但我想看看在 Neo4j 中是否有一种首选方法来处理这个问题 而不是在 sql 数据库中如何处理 现在我有 2 个模型 user and event 我之间也有关系user and event表示他们将参加该活动
  • 在 groovy shell 中使用 groovy 类别

    我正在使用 Groovy 类别在一些 DSL 下工作 我想找到一种方法来使用我的 DSL 和 groovy shell 而无需显式编写use MyCategory myObject doSomething 对于每个命令 例如 假设我有以下玩
  • 使用 JPA 从表中删除所有行

    我想使用 JPA 删除特定表中的所有行 我做了什么 public class EmptyBomTables extends HttpServlet private static final long serialVersionUID 1L
  • 如何同步向mongo插入数据(Nodejs、Express)

    我在使用 node express 将数据插入 mongodb 时遇到问题 我的代码如下所示 router get data section sort function req res next Deleting old data alwa
  • Python3 openpyxl 将包含特定值的行中的数据复制到现有工作簿中的新工作表

    我正在尝试将其中包含特定值的行复制到新工作表中 在查看下面列出的参考资料时 我能够确定如何使用 ws append 进行复制 但这在脚本中无法正常运行 我想做的是迭代 wb 如果它具有特定值 则创建另一个工作表并将该行复制到该工作表 我将不
  • 在函数中使用 Config::set() 两次的方法

    我已经用谷歌搜索和 stackoverflowed 如果可以的话 来解决这个问题 但找不到足够简洁的答案 一些参考文献 Laravel 4 当使用 Config set 更改 auth model 时 Auth user 不起作用 http