401 未找到 JWT 令牌

2023-11-23

我提供了两个版本security.yaml文件。第二个版本根据API平台文档。API平台发送到创建自定义用户提供者。对于第二个选项security.yaml根据 API 平台文档推荐,我需要创建两个额外的文件。我没有将它们附加到主题中,但如果有必要,我会这样做。

但我认为这个问题出在 JWT 上。

环境:

  • 节点 v8.9.4
  • 铬64.0.3282.119
  • 乌班图16.04
  • axios版本:0.16.2
  • Vue.js 2.4.2
  • vue-axios 2.0.2
  • api 平台/api 包:1.0
  • 交响乐4.0.4

User.php

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Table(name="app_users")
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User implements UserInterface, \Serializable
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=25, unique=true)
     */
    private $username;

    /**
     * @ORM\Column(type="string", length=64)
     */
    private $password;

    /**
     * @ORM\Column(type="string", length=60, unique=true)
     */
    private $email;

    /**
     * @ORM\Column(name="is_active", type="boolean")
     */
    private $isActive;

    public function __construct() // add $username
    {
        $this->isActive = true;
    }

    public function getUsername()
    {
        return $this->username;
    }

    public function getSalt()
    {
        // you *may* need a real salt depending on your encoder
        // see section on salt below
        return null;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function getRoles()
    {
        return array('ROLE_ADMIN');
    }

    public function eraseCredentials()
    {
    }

    /** @see \Serializable::serialize() */
    public function serialize()
    {
        return serialize(array(
            $this->id,
            $this->username,
            $this->password,
            // see section on salt below
            // $this->salt,
        ));
    }

    /** @see \Serializable::unserialize() */
    public function unserialize($serialized)
    {
        list (
            $this->id,
            $this->username,
            $this->password,
            // see section on salt below
            // $this->salt
        ) = unserialize($serialized);
    }
}

第一个选项 security.yaml

security:

    encoders:
        App\Entity\User:
            algorithm: bcrypt

    providers:

        our_db_provider:
            entity:
                class: App\Entity\User
                property: username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            form_login:
                check_path:               /api/login_check
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
                require_previous_session: false

        api:
            pattern:   ^/api
            stateless: true
            provider: our_db_provider
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

第二个选项 security.yaml

security:

    encoders:
        App\Entity\User:
            algorithm: bcrypt

        App\Security\User\WebserviceUser: bcrypt

    providers:

        our_db_provider:
            entity:
                class: App\Entity\User
                property: username

        webservice:
            id: App\Security\User\WebserviceUserProvider

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            provider: webservice
            form_login:
                check_path:               /api/login_check
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
                require_previous_session: false

        api:
            pattern:   ^/api
            stateless: true
            provider: our_db_provider
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator
    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

Headers

headers

curl

curl

带标题的卷曲

curl with headers

在浏览器中

in browser

.env

###> lexik/jwt-authentication-bundle ###
# Key paths should be relative to the project directory 
JWT_PRIVATE_KEY_PATH=var/jwt/private.pem
JWT_PUBLIC_KEY_PATH=var/jwt/public.pem
JWT_PASSPHRASE=d70414362252a41ce772dff4823d084d
###< lexik/jwt-authentication-bundle ###

lexik_jwt_authentication.yaml

lexik_jwt_authentication:
    private_key_path: '%kernel.project_dir%/%env(JWT_PRIVATE_KEY_PATH)%'
    public_key_path:  '%kernel.project_dir%/%env(JWT_PUBLIC_KEY_PATH)%'
    pass_phrase:      '%env(JWT_PASSPHRASE)%'

我的解决方案是将其添加到 .htaccess 中

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

401 未找到 JWT 令牌 的相关文章

  • Symfony StreamedResponse 服务器发送事件阻止请求

    我在 Symfony 中使用 StreamedResponse 实现了服务器发送事件 SSE 因此 当事件发生时 会话中会保存一条消息 该消息将通知给用户 问题是 当执行包含客户端代码的页面时 它会阻止对应用程序的所有 Web 请求 直到
  • 如何在 access_token 中添加角色声明,目前它是在 id_token 中?

    我正在使用 PKCE 跟踪身份验证代码流 我的身份提供程序是 Azure Active Directory 我从应用程序注册创建了一个应用程序 客户端应用程序 在清单中 我添加了如下所示的 appRoles appRoles allowed
  • Twig:如何获取字符串中的第一个字符

    我正在实施按字母顺序搜索 我们显示一个名称表 我只想突出显示那些名称以相应字母开头的字母 我被一个简单的问题难住了 如何读取 twig 中字符串 user name 的第一个字符 我尝试了多种策略 包括 0 操作 但它抛出异常 这是代码 f
  • 在非持久字段更改上保留实体

    我有一个具有 plainPassword 和密码属性的实体 在表单中 我映射到 plainPassword 之后 当用户验证表单时 我对 plainPassword 进行密码验证 为了对密码进行编码 我使用了监听 prePersist 和
  • Git 无效的修订范围 Symfony2 Composer 外部包

    RuntimeException Failed to execute git log 18efcf67d236d5bbf46ac67820250dffd0474b6e 94e2146f525fa1367e15646fa273e5b34f92
  • 使用 willdurand/BazingaJsTranslationBundle 时出现问题

    为了在我的 JavaScript 文件中使用翻译 我实现了willdurand BazingaJsTranslationBundle https github com willdurand BazingaJsTranslationBundl
  • API 不会停止急切加载

    我正在这里阅读文档 https api platform com docs core performance eager loading https api platform com docs core performance eager
  • 如何使用多个数据库设置 symfony 3 学说迁移?

    我在验证和更新模式时努力让 symfony doctrine 排除数据库视图 我第一次尝试没有教条迁移 看到这个问题 https stackoverflow com questions 46775200 symfony 3 doctrine
  • Django REST JWT 刷新

    使用 JWT 实施 Django REST 和身份验证 对于 JWT 令牌 我们必须在过期之前刷新它 过期后 JWT 将不会提供新的令牌 对于我的移动设备 我需要每 10 分钟刷新一次令牌 JWT EXPIRATION DELTA 如果用户
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • Symfony2 - 将 Swiftmailer 添加为服务

    我想将我的电子邮件代码从我的控制器移至服务中 到目前为止我已完成以下操作 在 services yml 中创建条目 在 acme demobundle services EmailManager php 中创建了一个 EmailManage
  • 如何从 JWT 令牌中提取声明

    我正在使用 dgrijalva jwt go 包 我想从令牌中提取有效负载 但找不到方法 示例 取自 https jwt io https jwt io 对于编码 eyJhbGciOiJIUZI1NiIsInR5cCI6IkpXVCJ9 e
  • 没有 OAuth 的 Spring Security JWT

    最近我开始学习如何使用oauth 2 0 jwt配置spring boot 我有一个问题 是否可以使用spring boot security jwt避免oauth 2 0 是的 可以使用JWT无需使用标准化的功能OAuth 2 0 flo
  • phpstorm xdebug 与 symfony2 项目

    我正在尝试使用 xdebug 和 phpstorm 调试 symfony2 应用程序 我的本地开发环境是Ubuntu 14 04 with apache2 Xdebug版本是2 2 7 我在另一个 php 不是 symfony2 项目上使用
  • Symfony2 捕获会话超时

    我有一个关于 Symfony2 的问题 希望有人能帮助我 Symfony 在哪里检查用户会话以及没有会话时该怎么办 就像重定向到登录页面一样 我发现了一些类似的问题 但不是我的意思 我为什么想知道它 如果有会话超时 我想检查调用是否是 Xm
  • 包含来自 twig 的非 twig 文件

    我需要将文件的内容 在我的资源文件夹内 包含在 Twig 模板中 我尝试过这个但没有运气 include public directory file ext Twig没有这个能力吗 我不想使用Assetic 1 15版本新增 Twig 1
  • 动态更改 FOSUserBundle 的服务参数值

    我问的是对 FOSUserBundle 使用多个实体管理器 https stackoverflow com questions 14475180 multiple entity manager for fosuserbundle之前 事实证
  • 无法访问扩展 Symfony\Bundle\FrameworkBundle\Controller\Controller 的控制器中的 Symfony2 容器

    原始问题 我已经阅读了 book http symfony com doc current book service container html 关于服务容器 我仍然感到困惑 因为几乎每次我尝试使用时 事情似乎都随机不起作用 this g
  • 使用 JWT 创建 Firebase 自定义身份验证令牌

    为了创建 firebase 自定义身份验证令牌 我使用第三方 JWT 库 https github com jwtk jjwt https github com jwtk jjwt 在此库中 有一个选项可以添加 firebase 自定义令牌
  • 从命令调用操作

    我想通过自定义命令执行操作 Controller php类的forward方法提供了这个功能 但是不知道从命令文件的execute 方法访问它 由于请求堆栈的原因 使控制器成为服务将导致性能开销 因为它应该返回一个HttpResponse

随机推荐

  • 查找 Maven 模块化项目中未使用的代码

    我必须清理一个旧项目 一般知识是该项目包含许多我们可以删除的未使用的代码 这将减少一些麻烦并使维护变得更容易 我发现 Eclipse Core Tools 插件看起来是一个很棒的工具 但在我们的例子中 我们有一个 Maven2 项目 它分为
  • 使用 Mockito 模拟局部范围对象的方法

    我需要一些帮助 Example void method1 MyObject obj1 new MyObject obj1 method1 我想嘲笑obj1 method1 在我的测试中 但为了透明 所以我不想制作和更改代码 Mockito
  • 如何在OpenLayers中获取多边形的坐标

    我一直在寻找如何确定 OpenLayers 中组成多边形 要素 的点的坐标 假设我创建了一个像下面这样的多边形this例子 我需要知道组成多边形的点 这样我就可以将它们保存在某个地方 我敢打赌这很容易 我只是找不到任何东西 可能我不知道我应
  • ARM 未对齐内存访问解决方法

    我必须将源代码移植到运行 Linux 的 ARM 平台 不幸的是我遇到了未对齐的内存访问问题 源代码大量使用指针转换和访问 像下面这样的代码已经像病毒一样在代码库中传播 多亏了 gcc 我可以查明有问题的位置 Wcast align命令行选
  • scipy.io.wavfile.read 无法读取 24 位 .wav 文件

    看起来scipy io wavfile read无法读取 24 位 wav 文件 您知道如何处理它们吗 如果您的 wav 文件未压缩 您可以尝试readwav函数在这里 https gist github com WarrenWeckess
  • WordPress:媒体库网格模式无限加载

    所以这个问题很奇怪 因为对我来说 Wordpress 媒体库在仅网格模式下的 WordPress 管理菜单中不起作用 这是非常奇怪的问题 因为这个问题仅发生在 1 个帐户上 这将是昨天我尝试上传一堆的帐户 将图片添加到媒体库后出现错误 稍后
  • 计算可能的“蛇”密码

    我们都知道移动设备上的新密码屏幕 它由要连接的点矩阵组成 唯一的密码是点的向量 这些点可以连接到自身 但有以下限制 一个点只能连接到另外 1 个点 如果目标点和空闲点在同一条线上 则线路将被迫连接到更近的点 一个例子 由于之前没有连接中间点
  • ClojureScript 不需要 Clojure 的 defstruct 背后的原因是什么?

    defstructClojureScript 不支持 这似乎是设计使然 现在这可能实际上是 Clojure 语言中已弃用的部分 ClojureScript 的设计者只是希望每个人都继续前进 但这只是我的猜测 我的问题是 ClojureScr
  • MATLAB:使用“-append”标志时,将多个变量保存到“-v7.3”(HDF5) .mat 文件似乎更快。怎么会?

    NOTE 本问题涉及 2011 年旧 MATLAB 版本 R2009a 中观察到的问题 根据 2016 年 7 月的以下更新 MATLAB 中的问题 错误似乎不再存在 使用 R2016a 进行测试 向下滚动到问题末尾以查看更新 我正在使用
  • 根据联系人电话号码获取联系人照片 Android - 工作示例 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 安卓2 3 3 我查看了有关如何获取 联系人照片 的各种示例 但他们都不适合我 令人惊讶的是 我在 StackOVerFlow 上偶然发现了一段代码 我使用了它并且可以获取 照片 并将
  • 如何通过 socket.io 将图像发送到服务器?

    我一直在为此绞尽脑汁 但找不到合适的解决方案 我希望能够通过 socket io emmit 将图像上传到服务器 并稍后将它们保存到 MongoDB 数据库 我该怎么做呢 我见过有人用 base64 编码来做这件事 但我不知道它到底是如何工
  • 使用类型变量进行强制转换

    下面的代码不起作用 我想知道如何动态地将实例转换为运行时确定的类型 Convert ChangeType 返回一个仍需要转换的对象 所有 Invoke GetConstructor 或 Activator CreateInstance 的尝
  • Pyramid 中可以有多个 ini 配置文件吗?

    我想要一个相当于姜戈一真道设置布局 一个共享基础文件 然后是生产文件和开发文件 每个文件都导入共享基础文件 Pyramid 的配置可以实现这一点吗 是的 这是可能的 在我的一个项目中 我有一个production base ini文件和所有
  • 使用 Xcode 在 MacOS X 上安装 GMP

    我正在尝试在我的 C 和 C 程序中使用 GMP 库 我使用 Xcode 编写代码 我按照说明在我的计算机上安装了 GMP 最终得到了一个文件夹 usr local gmp 5 0 5 其中包含 gmp h 文件 我怎样才能让我的程序看到这
  • ZXing Barcode Reader:如何在捕获屏幕周围制作自定义边框?

    我想在 zxing 捕获屏幕 相机屏幕 周围放置自定义边框 我需要为此进行什么修改 我需要更改哪些活动和布局才能达到此效果 您根本不需要编辑布局 In ViewfinderView find onDraw方法 它是绘制 扫描矩形 的核心 您
  • Forecast.io API 与 jQuery 的结合使用

    我在使用 API 特别是 Forecast io 天气 API 创建完整的应用程序时遇到一些问题 为简单起见 我将 JS 直接放在 HTML 页面中 对于这个基本版本 我很高兴能有这样的展示 假设我想要当前温度 当前 gt 温度 另外 我不
  • 在 Django 中引用来自 Javascript 的静态图像

    所以我正在开发一个 Django 项目 并试图找出如何让 Javascript 能够从我的静态目录渲染图像 我修改了 settings py 以从 myproject static 加载静态文件 图像 js 等 并从 myproject t
  • 绑定不匹配错误和java泛型方法

    我收到以下错误 Bound mismatch The generic method constructPage WebDriver int Class
  • RStudio 项目打开时自动运行 R 代码

    我编写了一个 R 函数来更新包的版本号另一个问题 我经常使用 GitHub 和 RStudio 如果每次我打开某个项目时都会自动运行此函数 或者更好的是进行 git commit push 但我认为这更难做到 但我不知道该怎么做或者这是否可
  • 401 未找到 JWT 令牌

    我提供了两个版本security yaml文件 第二个版本根据API平台文档 API平台发送到创建自定义用户提供者 对于第二个选项security yaml根据 API 平台文档推荐 我需要创建两个额外的文件 我没有将它们附加到主题中 但如