自定义 Laravel 护照 BearerTokenResponse

2023-12-01

目前我有一个使用 Laravel Passport 的 Laravel 安装(它使用league/oauth2-server用于服务器实现)。我想在授予 oauth2 令牌时返回用户 ID,以便我可以使用它来识别我的 EmberJS 应用程序中经过身份验证的用户。

建议的方法是:

创建我自己的类:

use League\OAuth2\Server\ResponseTypes\BearerTokenResponse;
use League\OAuth2\Server\Entities\AccessTokenEntityInterface;

class UserIdBearerTokenResponse extends BearerTokenResponse
{
    protected function getExtraParams(AccessTokenEntityInterface $accessToken)
    {
        return [
            'user_id' => $this->accessToken->getUserIdentifier()
        ];
    }
}

修改AuthorizationServer.getResponseType() in vendor/league/oauth2-server/src

protected function getResponseType()
{
    if ($this->responseType instanceof ResponseTypeInterface === false) {
        // Return my own class instead of provided one
        $this->responseType = new UserIdBearerTokenResponse();
    }

    $this->responseType->setPrivateKey($this->privateKey);

    return $this->responseType;
}

但这种方法需要我添加vendor/league/oauth2-server/src/AuthorizationServer.php文件到我的 git 存储库。

这对我来说似乎非常混乱和不可靠。有没有更好/更干净的方法来实现这一目标?


要使用自定义响应,您可以添加自定义授权服务器,如下所示:

<?php

namespace App;

use League\OAuth2\Server\AuthorizationServer;
use League\OAuth2\Server\ResponseTypes\ResponseTypeInterface;

class TokenServer extends AuthorizationServer
{
    /**
     * Get the token type that grants will return in the HTTP response.
     *
     * @return ResponseTypeInterface
     */
    protected function getResponseType()
    {
        if ($this->responseType instanceof ResponseTypeInterface === false) {
            $this->responseType = new UserIdBearerTokenResponse();
        }

        $this->responseType->setPrivateKey($this->privateKey);

        return $this->responseType;
    }
}

和一个像这样的自定义 PassportServiceProvider:

<?php

namespace App\Providers;

use App\TokenServer;

class PassportServiceProvider extends \Laravel\Passport\PassportServiceProvider
{

    /**
     * Make the authorization service instance.
     *
     * @return AuthorizationServer
     */
    public function makeAuthorizationServer()
    {
        return new TokenServer(
            $this->app->make(\Laravel\Passport\Bridge\ClientRepository::class),
            $this->app->make(\Laravel\Passport\Bridge\AccessTokenRepository::class),
            $this->app->make(\Laravel\Passport\Bridge\ScopeRepository::class),
            'file://'.storage_path('oauth-private.key'),
            'file://'.storage_path('oauth-public.key')
        );
    }

}

然后在 config/app.php 文件中进行以下更改:

/*
 * Package Service Providers...
 * We extend the packaged PassportServiceProvider with our own customization
 */

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

自定义 Laravel 护照 BearerTokenResponse 的相关文章

  • PHP 文件上传帮助

    div align center div 这是我的代码
  • Laravel - 停止并发访问记录

    在 Laravel 中 有什么方法可以停止同时与同一条记录交互 例如 如果用户 A 正在编辑一条记录 那么我同时需要阻止用户 B 编辑同一条记录 注意 我在 Laravel 5 2 中使用 SESSION DRIVER file 目前大约有
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • 具有动态表单名称的 form_widget

    在我的 Twig 模板中 我有一个 FOR 循环 它创建多个表单 如下所示 for thing in things set form id myform thing Id set form name attribute form myfor
  • 运行 Composer 返回:“无法打开输入文件:composer.phar”

    我是 symfony2 和阅读新手symblog http tutorial symblog co uk tutorial parts 在第三章中 在尝试使用数据装置时 我尝试了以下命令 php composer phar update 但
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • TOMCAT 6 中的 PHP - 异常

    我一直在努力融入PHP in APACHE TOMCAT 6依照指示second answer为了QUESTION https stackoverflow com questions 779246 run a php app using t
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 安装后如何使用 npm 包 (chart.js)?

    我正在制作一个练习 Laravel 站点 并且我已经通过 npm install 安装了 Chart js 这是一个愚蠢的问题 但现在我如何从这里使用它 或通过 npm 安装的任何东西 这些文件安装在节点模块文件夹中 我应该在页眉中使用标签
  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs

随机推荐

  • 为什么有序列表的 sapply 会输出我的内容两次

    我使用以下代码将文件列表存储在列表中 filesList lt list files path Users myPath data pattern csv 然后我想在没有索引的情况下输出它 通常以形式出现 1 在每一行的开头 所以我尝试了这
  • R 中的环境、mapply 和 get

    Let x lt 2在全局环境中 x lt 2 x 1 2 Let a是一个定义另一个函数的函数x本地并使用get a lt function x lt 1 get x 该函数正确得到x从当地环境来看 a 1 1 现在我们定义一个函数b如下
  • Fluentd apache 格式 [警告]:模式不匹配:

    在我的 etc Fluent Fluent conf 中
  • 如何在不使用 FilePicker 的情况下在固定位置保存和加载 InkCanvas gif 文件

    我想保存并加载InkCanvas gif文件没有FilePicker I saw a sample using FilePicker 但我想保存gif当我单击 保存 按钮时自动文件 例如 当我保存 1InkCanvas gif file 然
  • 安装 PyOpenGLContext 时出现问题(语法错误)

    我最近决定用 python 学习 OpenGL 我使用安装了 PyOpenGLpip3 install PyOpenGl PyOpenGl accelerate 然后我正要遵循一个教程对于 PyOpenGL 第一项是安装 PyOpenGLC
  • 带有垂直行的 HTML 表格

    如何在 HTML 中制作垂直表格 垂直 我的意思是行将垂直 表标题位于左侧 我还需要它的方式 这样我就可以像在普通表中一样访问这些行 在本例中是垂直的 tr 这是因为我动态获取一行的数据 如 A 行 并将其插入表中 我使用 angularJ
  • 将时间格式设置为“24 小时军用时间”?

    我正在将一些 SQL Server 2000 代码更新到 SQL Server 2008R2 并且有一个看起来很像的函数this用于将时间转换为 24 小时格式 在 T SQL 中执行此操作的更酷 更聪明的方法是什么 如果你想要的只是军事时
  • 对不同类型对象的列表进行排序

    我有一个对象列表 其中包含不同类型的对象 但单个属性在所有对象中都是通用的 列表包含 Field 类 Button 类 Page 类等对象 但其中一个属性是通用的 即 sequence no 我想根据 sequence no 对该列表进行排
  • NPM 包错误 - 'newman' 未被识别为内部或外部命令

    我已在我的 64 位 Win 10 计算机中安装了最新版本的 Newman 3 10 0 C Users ABC gt npm install g newman C Users ABC AppData Roaming npm newman
  • 将方法传递给后台工作者 dowork

    在下面的代码中 有没有一种方法可以不总是订阅 updateWorker DoWork 方法 而是向其传递这样的方法 public void GetUpdates SomeObject blah updateWorker DoWork new
  • ImageMagick 中的字体渲染缓慢

    我正在使用以下 ImageMagick 脚本 使用 Imagick for PHP 来生成字体图像 该脚本大约需要 0 1 秒来生成约 30 个字符 大小为 48 的图像 目标速度约为 0 01 秒 恐怕切换到 GD 库可能是实现这一目标的
  • 如何使用jBcrypt检查bcrypt密码? (将存储从 Parse.com 移至 Firebase)

    一些开发人员需要将存储从 parse com 移动到另一台服务器 当我从解析导出数据时 我得到了 json 数据 此 json 数据具有加密密码 bcrypt 例如 2a 10 pcR4SaZd3PMD nXQKMssxupMLncDoFw
  • 为什么 NLTK NaiveBayes 分类器会对一条记录进行错误分类?

    这是我第一次使用 Python 中的 nltk NaiveBayesClassifier 构建情感分析机器学习模型 我知道这个模型太简单了 但这对我来说只是第一步 下次我会尝试标记化句子 我当前模型的真正问题是 我已在训练数据集中将 坏 一
  • 在 Python 中循环 XML

    我的数据集如下
  • 如何限制 Ingres 中任意查询的结果集大小?

    在 Oracle 中 可以通过过滤 虚拟 来限制任意查询中返回的行数rownum柱子 考虑以下示例 它将最多返回 10 行 SELECT FROM all tables WHERE rownum lt 10 有没有一种简单 通用的方法可以在
  • Jquery对话框问题

    大家好 我正在开发一个 MVC 应用程序 我想使用 Jquery 对话框 我有以下情况 我有 Telerik 树视图 当我单击任何节点时 我希望打开对话框并显示有关该节点的信息 首先 我添加以下脚本来初始化对话框 document read
  • 更快的算法来更改位图中的色相/饱和度/亮度

    我正在尝试过滤位图图像以增加或减少色相 饱和度和亮度值 我的代码运行完美 但是它很慢 我在内存中锁定了两个位图 原始源和当前目标 用户可以移动各种trackbar控件修改每个值 然后将其转换为 HSL 值 例如 轨迹栏上的值对应于 1 0
  • 对 JSONPlaceholder 的 POST 请求在后续获取中未生效

    我已经使用 typecode 使用 get 方法对帖子进行了排序 现在我想使用 post 方法自己添加它 我怎样才能正确地做到这一点 这里的问题是 即使发布了 也不会出现在帖子列表中 当我自己添加并在排名中看到它时 我希望它出现在所有帖子中
  • SIGCONT 和 SIGHUP 的顺序发送到孤立的 linux 进程组

    APUE 说 由于当父进程终止时 进程组将成为孤立进程 因此 POSIX 1 要求进程组中的每个进程 停止的新孤立进程组 就像我们的孩子一样 将被发送挂起信号 SIGHUP 随后是继续信号 SIGCONT include
  • 自定义 Laravel 护照 BearerTokenResponse

    目前我有一个使用 Laravel Passport 的 Laravel 安装 它使用league oauth2 server用于服务器实现 我想在授予 oauth2 令牌时返回用户 ID 以便我可以使用它来识别我的 EmberJS 应用程序